Arun6667777 commited on
Commit
fd9a1a2
Β·
verified Β·
1 Parent(s): 0f49f60

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +75 -69
Dockerfile CHANGED
@@ -1,94 +1,97 @@
1
  ############################################################
2
- # Dockerfile β€” AmazonΒ LinuxΒ 2023 with Python 3.12, Conda, Node.js
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️⃣ System packages
14
- ###########################
15
  RUN yum -y update && \
16
  yum -y install --allowerasing \
17
- sudo \
18
- curl-minimal \
19
- wget \
20
- git \
21
- unzip \
22
- zip \
23
- which \
24
- tar \
25
- shadow-utils \
26
- procps-ng \
27
- nano \
28
- vim \
29
- bzip2 \
30
- gcc \
31
- gcc-c++ \
32
- make \
33
- glibc-langpack-en \
34
- libX11 \
35
- openssl \
36
- ca-certificates \
37
- libsndfile \
38
- python3.12 \
39
- python3.12-pip && \
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 21 + proxy
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️⃣ Conda (Miniconda with Python 3.9)
54
- ###########################
55
- ENV HOME=/home/user \
56
- CONDA_AUTO_UPDATE_CONDA=false \
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
- # 5️⃣ Copy & install Python packages
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 /tmp/requirements.txt
87
 
88
- ###########################
89
- # 6️⃣ Root section: install extra packages + run startup script
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
- # 7️⃣ Copy App Files & Set Runtime
104
- ###########################
105
-
106
  USER user
107
-
108
  COPY --chown=user . $HOME/app
109
 
110
- RUN chmod +x start_server.sh
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"]