ACCA225 commited on
Commit
61e5352
·
verified ·
1 Parent(s): a03dbfe

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +28 -38
Dockerfile CHANGED
@@ -1,15 +1,15 @@
 
1
  FROM nvidia/cuda:12.5.1-cudnn-devel-ubuntu20.04
2
 
 
3
  ENV DEBIAN_FRONTEND=noninteractive \
4
  TZ=Europe/Paris
5
 
6
- # Remove any third-party apt sources to avoid issues with expiring keys.
7
- # Install some basic utilities
8
  RUN rm -f /etc/apt/sources.list.d/*.list && \
9
  apt-get update && apt-get install -y --no-install-recommends \
10
  curl \
11
  ca-certificates \
12
- sudo \
13
  git \
14
  wget \
15
  procps \
@@ -26,74 +26,63 @@ RUN rm -f /etc/apt/sources.list.d/*.list && \
26
  software-properties-common \
27
  && rm -rf /var/lib/apt/lists/*
28
 
 
29
  RUN add-apt-repository ppa:flexiondotorg/nvtop && \
30
  apt-get upgrade -y && \
31
  apt-get install -y --no-install-recommends nvtop
32
 
 
33
  RUN curl -sL https://deb.nodesource.com/setup_21.x | bash - && \
34
  apt-get install -y nodejs && \
35
  npm install -g configurable-http-proxy
36
 
37
- # Create a working directory
38
- WORKDIR /app
39
-
40
- # Create a non-root user and switch to it
41
- RUN adduser --disabled-password --gecos '' --shell /bin/bash user \
42
- && chown -R user:user /app
43
- RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
44
- USER user
45
 
46
- # All users can use /home/user as their home directory
47
- ENV HOME=/home/user
48
- RUN mkdir $HOME/.cache $HOME/.config \
49
- && chmod -R 777 $HOME
50
 
51
- # Set up the Conda environment
52
  ENV CONDA_AUTO_UPDATE_CONDA=false \
53
- PATH=$HOME/miniconda/bin:$PATH
54
  RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \
55
  && chmod +x ~/miniconda.sh \
56
- && ~/miniconda.sh -b -p ~/miniconda \
 
57
  && rm ~/miniconda.sh \
58
  && conda clean -ya
59
 
 
 
60
  WORKDIR $HOME/app
61
 
62
- #######################################
63
- # Start root user section
64
- #######################################
65
-
66
- USER root
67
-
68
- # User Debian packages
69
- ## Security warning : Potential user code executed as root (build time)
70
  RUN --mount=target=/root/packages.txt,source=packages.txt \
71
  apt-get update && \
72
  xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends \
73
  && rm -rf /var/lib/apt/lists/*
74
 
 
75
  RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \
76
  bash /root/on_startup.sh
77
 
78
- RUN mkdir /data && chown user:user /data
79
-
80
- #######################################
81
- # End root user section
82
- #######################################
83
-
84
- USER user
85
 
86
- # Python packages
87
  RUN --mount=target=requirements.txt,source=requirements.txt \
88
  pip install --no-cache-dir --upgrade -r requirements.txt
89
 
90
- # Copy the current directory contents into the container at $HOME/app setting the owner to the user
91
- COPY --chown=user . $HOME/app
92
 
 
93
  RUN chmod +x start_server.sh
94
 
95
- COPY --chown=user login.html /home/user/miniconda/lib/python3.9/site-packages/jupyter_server/templates/login.html
 
96
 
 
97
  ENV PYTHONUNBUFFERED=1 \
98
  GRADIO_ALLOW_FLAGGING=never \
99
  GRADIO_NUM_PORTS=1 \
@@ -102,4 +91,5 @@ ENV PYTHONUNBUFFERED=1 \
102
  SYSTEM=spaces \
103
  SHELL=/bin/bash
104
 
105
- CMD ["./start_server.sh"]
 
 
1
+ # 使用与原始模板相同的基础镜像
2
  FROM nvidia/cuda:12.5.1-cudnn-devel-ubuntu20.04
3
 
4
+ # 设置环境变量,避免交互式提示
5
  ENV DEBIAN_FRONTEND=noninteractive \
6
  TZ=Europe/Paris
7
 
8
+ # 安装基础工具
 
9
  RUN rm -f /etc/apt/sources.list.d/*.list && \
10
  apt-get update && apt-get install -y --no-install-recommends \
11
  curl \
12
  ca-certificates \
 
13
  git \
14
  wget \
15
  procps \
 
26
  software-properties-common \
27
  && rm -rf /var/lib/apt/lists/*
28
 
29
+ # 安装 nvtop
30
  RUN add-apt-repository ppa:flexiondotorg/nvtop && \
31
  apt-get upgrade -y && \
32
  apt-get install -y --no-install-recommends nvtop
33
 
34
+ # 安装 nodejs
35
  RUN curl -sL https://deb.nodesource.com/setup_21.x | bash - && \
36
  apt-get install -y nodejs && \
37
  npm install -g configurable-http-proxy
38
 
39
+ # --- 修改开始 ---
 
 
 
 
 
 
 
40
 
41
+ # 设置工作目录为 /app
42
+ WORKDIR /app
 
 
43
 
44
+ # 设置 Conda 环境,并将其安装在 /opt/conda
45
  ENV CONDA_AUTO_UPDATE_CONDA=false \
46
+ PATH=/opt/conda/bin:$PATH
47
  RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \
48
  && chmod +x ~/miniconda.sh \
49
+ # -p 参数指向 /opt/conda
50
+ && ~/miniconda.sh -b -p /opt/conda \
51
  && rm ~/miniconda.sh \
52
  && conda clean -ya
53
 
54
+ # 设置 HOME 环境变量和工作目录
55
+ ENV HOME=/root
56
  WORKDIR $HOME/app
57
 
58
+ # 这部分保留,因为它是 root 用户执行的,没有变化
59
+ # 安装用户定义的 Debian
 
 
 
 
 
 
60
  RUN --mount=target=/root/packages.txt,source=packages.txt \
61
  apt-get update && \
62
  xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends \
63
  && rm -rf /var/lib/apt/lists/*
64
 
65
+ # 运行用户定义的启动脚本
66
  RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \
67
  bash /root/on_startup.sh
68
 
69
+ # 创建数据目录
70
+ RUN mkdir /data
 
 
 
 
 
71
 
72
+ # 安装 Python 依赖包
73
  RUN --mount=target=requirements.txt,source=requirements.txt \
74
  pip install --no-cache-dir --upgrade -r requirements.txt
75
 
76
+ # 复制当前目录内容到容器中
77
+ COPY . $HOME/app
78
 
79
+ # 确保启动脚本有执行权限
80
  RUN chmod +x start_server.sh
81
 
82
+ # 复制自定义登录页(注意路径已更改为新的 conda site-packages 路径)
83
+ COPY login.html /opt/conda/lib/python3.9/site-packages/jupyter_server/templates/login.html
84
 
85
+ # 设置环境变量
86
  ENV PYTHONUNBUFFERED=1 \
87
  GRADIO_ALLOW_FLAGGING=never \
88
  GRADIO_NUM_PORTS=1 \
 
91
  SYSTEM=spaces \
92
  SHELL=/bin/bash
93
 
94
+ # 定义容器启动命令
95
+ CMD ["./start_server.sh"]