abc1181 commited on
Commit
fe8fb26
·
verified ·
1 Parent(s): 99f659f

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +40 -15
Dockerfile CHANGED
@@ -1,28 +1,53 @@
1
  FROM nvidia/cuda:11.3.1-base-ubuntu20.04
2
 
3
- # Set root-level environment variables
 
 
4
  ENV DEBIAN_FRONTEND=noninteractive \
 
5
  HOME=/root \
6
- WORKDIR=/root/app
7
-
 
 
 
8
  RUN apt-get update && apt-get install -y \
9
- curl ca-certificates sudo git git-lfs zip unzip htop nginx vim wget build-essential \
 
10
  && rm -rf /var/lib/apt/lists/*
11
 
12
- # Install openvscode-server directly into /opt or /root
13
- RUN CODE_RELEASE=$(curl -sX GET "https://api.github.com/repos/gitpod-io/openvscode-server/releases/latest" | jq -r .tag_name | sed 's/openvscode-server-v//') && \
14
- mkdir -p /opt/openvscode-server && \
15
- curl -L "https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v${CODE_RELEASE}/openvscode-server-v${CODE_RELEASE}-linux-x64.tar.gz" | tar -xzC /opt/openvscode-server --strip-components=1
 
 
16
 
17
- # Create the user but give them global sudo with no password
18
- RUN useradd -m -u 1000 user && \
19
- echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
 
 
 
 
 
 
 
 
 
20
 
21
- # Setup the project in /root/app
22
  WORKDIR /root/app
23
  COPY . /root/app
24
- RUN chmod -R 777 /root # High-level permission grant
25
 
26
- # Switch to the mandatory HF user, but immediately sudo back to root in the CMD or ENTRYPOINT
 
 
 
 
 
27
  USER user
28
- CMD ["sudo", "-E", "bash", "start_server.sh"]
 
 
 
1
  FROM nvidia/cuda:11.3.1-base-ubuntu20.04
2
 
3
+ # 1. We are root. We stay root for the entire build.
4
+ USER root
5
+
6
  ENV DEBIAN_FRONTEND=noninteractive \
7
+ TZ=Asia/Shanghai \
8
  HOME=/root \
9
+ WORKDIR=/root/app \
10
+ LANG=C.UTF-8 \
11
+ LC_ALL=C.UTF-8
12
+
13
+ # 2. Install all core tools
14
  RUN apt-get update && apt-get install -y \
15
+ curl jq ca-certificates sudo git git-lfs zip unzip htop nginx vim wget build-essential \
16
+ libsndfile-dev software-properties-common net-tools \
17
  && rm -rf /var/lib/apt/lists/*
18
 
19
+ # 3. Install OpenVSCode-Server directly into /opt
20
+ RUN mkdir -p /opt/openvscode-server && \
21
+ CODE_RELEASE=$(curl -sX GET "https://api.github.com/repos/gitpod-io/openvscode-server/releases/latest" | jq -r .tag_name | sed 's/openvscode-server-v//') && \
22
+ if [ "$CODE_RELEASE" = "null" ] || [ -z "$CODE_RELEASE" ]; then CODE_RELEASE="1.93.0"; fi && \
23
+ curl -L "https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v${CODE_RELEASE}/openvscode-server-v${CODE_RELEASE}-linux-x64.tar.gz" \
24
+ | tar -xzC /opt/openvscode-server --strip-components=1
25
 
26
+ # 4. Create the Absolute Root Workspace
27
+ RUN mkdir -p /root/app/data && \
28
+ mkdir -p /root/.vscode-server/extensions && \
29
+ chmod -R 777 /root && \
30
+ chmod -R 777 /opt/openvscode-server
31
+
32
+ # 5. Install Conda strictly for Root
33
+ RUN curl -sLo /root/miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
34
+ chmod +x /root/miniconda.sh && \
35
+ /root/miniconda.sh -b -p /root/miniconda && \
36
+ rm /root/miniconda.sh
37
+ ENV PATH=/root/miniconda/bin:$PATH
38
 
39
+ # 6. Copy files directly as root (no chown to 1000)
40
  WORKDIR /root/app
41
  COPY . /root/app
42
+ RUN chmod +x /root/app/start_server.sh
43
 
44
+ # 7. THE TROJAN HORSE
45
+ # We create the user just to satisfy Hugging Face, but give it God-mode sudo
46
+ RUN useradd -m -u 1000 user && \
47
+ echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
48
+
49
+ # Hugging Face checks this specific line to allow the boot
50
  USER user
51
+
52
+ # But we immediately break out into root execution
53
+ CMD ["sudo", "-E", "bash", "/root/app/start_server.sh"]