Spaces:
Paused
Paused
Update Dockerfile
Browse files- Dockerfile +75 -69
Dockerfile
CHANGED
|
@@ -1,94 +1,97 @@
|
|
| 1 |
############################################################
|
| 2 |
-
#
|
| 3 |
############################################################
|
| 4 |
|
| 5 |
FROM amazonlinux:2023
|
| 6 |
|
|
|
|
|
|
|
|
|
|
| 7 |
ENV TZ=Europe/Paris \
|
| 8 |
-
PYTHONUNBUFFERED=1 \
|
| 9 |
LANG=en_US.UTF-8 \
|
| 10 |
-
LC_ALL=en_US.UTF-8
|
|
|
|
| 11 |
|
| 12 |
-
#
|
| 13 |
-
# 1οΈβ£
|
| 14 |
-
#
|
| 15 |
RUN yum -y update && \
|
| 16 |
yum -y install --allowerasing \
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
yum clean all && \
|
| 41 |
alternatives --install /usr/bin/python python /usr/bin/python3.12 1 && \
|
| 42 |
alternatives --install /usr/bin/pip pip /usr/bin/pip3.12 1
|
| 43 |
|
| 44 |
-
#
|
| 45 |
-
# 2οΈβ£ Node.js
|
| 46 |
-
#
|
| 47 |
RUN curl -sL https://rpm.nodesource.com/setup_21.x | bash - && \
|
| 48 |
yum install -y nodejs && \
|
| 49 |
npm install -g configurable-http-proxy && \
|
| 50 |
yum clean all
|
| 51 |
|
| 52 |
-
#
|
| 53 |
-
# 3οΈβ£
|
| 54 |
-
#
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
PATH=$HOME/miniconda/bin:$PATH
|
| 58 |
-
|
| 59 |
-
RUN useradd -m user && \
|
| 60 |
-
echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
|
| 61 |
-
|
| 62 |
USER user
|
| 63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
RUN curl -sLo $HOME/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh && \
|
| 65 |
chmod +x $HOME/miniconda.sh && \
|
| 66 |
$HOME/miniconda.sh -b -p $HOME/miniconda && \
|
| 67 |
rm $HOME/miniconda.sh && \
|
| 68 |
-
conda clean -ya
|
| 69 |
-
|
| 70 |
-
###########################
|
| 71 |
-
# 4οΈβ£ Workspace & permissions
|
| 72 |
-
###########################
|
| 73 |
-
RUN mkdir -p $HOME/app $HOME/.cache $HOME/.config && \
|
| 74 |
-
chmod -R 777 $HOME
|
| 75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
WORKDIR $HOME/app
|
| 77 |
|
| 78 |
-
#
|
| 79 |
-
#
|
| 80 |
-
#
|
| 81 |
-
|
| 82 |
-
# These are only available during Docker build with BuildKit (`--mount`)
|
| 83 |
-
# So we fallback to copying files manually
|
| 84 |
-
COPY requirements.txt /tmp/requirements.txt
|
| 85 |
RUN pip install --no-cache-dir --upgrade pip && \
|
| 86 |
-
pip install --no-cache-dir -r
|
| 87 |
|
| 88 |
-
#
|
| 89 |
-
#
|
| 90 |
-
#
|
|
|
|
| 91 |
|
|
|
|
|
|
|
|
|
|
| 92 |
USER root
|
| 93 |
|
| 94 |
COPY packages.txt /root/packages.txt
|
|
@@ -99,22 +102,25 @@ RUN chmod +x /root/on_startup.sh && /root/on_startup.sh
|
|
| 99 |
|
| 100 |
RUN mkdir -p /data && chown user:user /data
|
| 101 |
|
| 102 |
-
#
|
| 103 |
-
#
|
| 104 |
-
#
|
| 105 |
-
|
| 106 |
USER user
|
| 107 |
-
|
| 108 |
COPY --chown=user . $HOME/app
|
| 109 |
|
| 110 |
-
|
| 111 |
COPY --chown=user login.html $HOME/miniconda/lib/python3.9/site-packages/jupyter_server/templates/login.html
|
| 112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
ENV GRADIO_ALLOW_FLAGGING=never \
|
| 114 |
GRADIO_NUM_PORTS=1 \
|
| 115 |
GRADIO_SERVER_NAME=0.0.0.0 \
|
| 116 |
GRADIO_THEME=huggingface \
|
| 117 |
-
SYSTEM=spaces
|
| 118 |
-
SHELL=/bin/bash
|
| 119 |
|
|
|
|
| 120 |
CMD ["./start_server.sh"]
|
|
|
|
| 1 |
############################################################
|
| 2 |
+
# Huggingβ―Face Space β AmazonΒ LinuxΒ 2023 + Miniconda + Jupyterβ―Lab
|
| 3 |
############################################################
|
| 4 |
|
| 5 |
FROM amazonlinux:2023
|
| 6 |
|
| 7 |
+
# βββββββββββββββββββββββββββββ
|
| 8 |
+
# 0οΈβ£ GlobalΒ ENV
|
| 9 |
+
# βββββββββββββββββββββββββββββ
|
| 10 |
ENV TZ=Europe/Paris \
|
|
|
|
| 11 |
LANG=en_US.UTF-8 \
|
| 12 |
+
LC_ALL=en_US.UTF-8 \
|
| 13 |
+
PYTHONUNBUFFERED=1
|
| 14 |
|
| 15 |
+
# βββββββββββββββββββββββββββββ
|
| 16 |
+
# 1οΈβ£ CoreΒ systemΒ packages
|
| 17 |
+
# βββββββββββββββββββββββββββββ
|
| 18 |
RUN yum -y update && \
|
| 19 |
yum -y install --allowerasing \
|
| 20 |
+
sudo \
|
| 21 |
+
curl-minimal \
|
| 22 |
+
wget \
|
| 23 |
+
git \
|
| 24 |
+
unzip \
|
| 25 |
+
zip \
|
| 26 |
+
which \
|
| 27 |
+
tar \
|
| 28 |
+
shadow-utils \
|
| 29 |
+
procps-ng \
|
| 30 |
+
nano \
|
| 31 |
+
vim \
|
| 32 |
+
bzip2 \
|
| 33 |
+
gcc \
|
| 34 |
+
gcc-c++ \
|
| 35 |
+
make \
|
| 36 |
+
glibc-langpack-en \
|
| 37 |
+
libX11 \
|
| 38 |
+
openssl \
|
| 39 |
+
ca-certificates \
|
| 40 |
+
libsndfile \
|
| 41 |
+
python3.12 \
|
| 42 |
+
python3.12-pip \
|
| 43 |
+
&& yum clean all && \
|
| 44 |
alternatives --install /usr/bin/python python /usr/bin/python3.12 1 && \
|
| 45 |
alternatives --install /usr/bin/pip pip /usr/bin/pip3.12 1
|
| 46 |
|
| 47 |
+
# βββββββββββββββββββββββββββββ
|
| 48 |
+
# 2οΈβ£ Node.jsΒ 21Β + configurableβhttpβproxy
|
| 49 |
+
# βββββββββββββββββββββββββββββ
|
| 50 |
RUN curl -sL https://rpm.nodesource.com/setup_21.x | bash - && \
|
| 51 |
yum install -y nodejs && \
|
| 52 |
npm install -g configurable-http-proxy && \
|
| 53 |
yum clean all
|
| 54 |
|
| 55 |
+
# βββββββββββββββββββββββββββββ
|
| 56 |
+
# 3οΈβ£ Create nonβroot user
|
| 57 |
+
# βββββββββββββββββββββββββββββ
|
| 58 |
+
RUN useradd -m user && echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
|
| 59 |
+
ENV HOME=/home/user
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
USER user
|
| 61 |
|
| 62 |
+
# βββββββββββββββββββββββββββββ
|
| 63 |
+
# 4οΈβ£ Install MinicondaΒ (PyΒ 3.9)
|
| 64 |
+
# βββββββββββββββββββββββββββββ
|
| 65 |
+
ENV CONDA_AUTO_UPDATE_CONDA=false \
|
| 66 |
+
PATH=$HOME/miniconda/bin:$PATH
|
| 67 |
+
|
| 68 |
RUN curl -sLo $HOME/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh && \
|
| 69 |
chmod +x $HOME/miniconda.sh && \
|
| 70 |
$HOME/miniconda.sh -b -p $HOME/miniconda && \
|
| 71 |
rm $HOME/miniconda.sh && \
|
| 72 |
+
$HOME/miniconda/bin/conda clean -ya
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
+
# βββββββββββββββββββββββββββββ
|
| 75 |
+
# 5οΈβ£ Workspace & caches
|
| 76 |
+
# βββββββββββββββββββββββββββββ
|
| 77 |
+
RUN mkdir -p $HOME/app $HOME/.cache $HOME/.config && chmod -R 777 $HOME
|
| 78 |
WORKDIR $HOME/app
|
| 79 |
|
| 80 |
+
# βββββββββββββββββββββββββββββ
|
| 81 |
+
# 6οΈβ£ Install Python libs (requirements.txt)
|
| 82 |
+
# βββββββββββββββββββββββββββββ
|
| 83 |
+
COPY --chown=user requirements.txt ./requirements.txt
|
|
|
|
|
|
|
|
|
|
| 84 |
RUN pip install --no-cache-dir --upgrade pip && \
|
| 85 |
+
pip install --no-cache-dir -r requirements.txt
|
| 86 |
|
| 87 |
+
# βββββββββββββββββββββββββββββ
|
| 88 |
+
# 7οΈβ£ Playwright (if needed)
|
| 89 |
+
# βββββββββββββββββββββββββββββ
|
| 90 |
+
RUN playwright install chromium
|
| 91 |
|
| 92 |
+
# βββββββββββββββββββββββββββββ
|
| 93 |
+
# 8οΈβ£ Root section β extra RPMs & startup script
|
| 94 |
+
# βββββββββββββββββββββββββββββ
|
| 95 |
USER root
|
| 96 |
|
| 97 |
COPY packages.txt /root/packages.txt
|
|
|
|
| 102 |
|
| 103 |
RUN mkdir -p /data && chown user:user /data
|
| 104 |
|
| 105 |
+
# βββββββββββββββββββββββββββββ
|
| 106 |
+
# 9οΈβ£ Copy application files
|
| 107 |
+
# βββββββββββββββββββββββββββββ
|
|
|
|
| 108 |
USER user
|
|
|
|
| 109 |
COPY --chown=user . $HOME/app
|
| 110 |
|
| 111 |
+
# Override Jupyter login template (optional)
|
| 112 |
COPY --chown=user login.html $HOME/miniconda/lib/python3.9/site-packages/jupyter_server/templates/login.html
|
| 113 |
|
| 114 |
+
RUN chmod +x start_server.sh
|
| 115 |
+
|
| 116 |
+
# βββββββββββββββββββββββββββββ
|
| 117 |
+
# π RuntimeΒ ENV & defaultΒ CMD
|
| 118 |
+
# βββββββββββββββββββββββββββββ
|
| 119 |
ENV GRADIO_ALLOW_FLAGGING=never \
|
| 120 |
GRADIO_NUM_PORTS=1 \
|
| 121 |
GRADIO_SERVER_NAME=0.0.0.0 \
|
| 122 |
GRADIO_THEME=huggingface \
|
| 123 |
+
SYSTEM=spaces
|
|
|
|
| 124 |
|
| 125 |
+
# HuggingΒ Face sets $PORT (e.g. 7860). start_server.sh must bind to it.
|
| 126 |
CMD ["./start_server.sh"]
|