ACCA225 commited on
Commit
2a2f471
·
verified ·
1 Parent(s): f057c25

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +17 -30
Dockerfile CHANGED
@@ -5,7 +5,7 @@ FROM nvidia/cuda:12.5.1-cudnn-devel-ubuntu20.04
5
  ENV DEBIAN_FRONTEND=noninteractive \
6
  TZ=Europe/Paris
7
 
8
- # 安装基础工具,并额外安装 dos2unix, mount, 和【关键修正】file
9
  RUN rm -f /etc/apt/sources.list.d/*.list && \
10
  apt-get update && apt-get install -y --no-install-recommends \
11
  curl \
@@ -29,17 +29,15 @@ RUN rm -f /etc/apt/sources.list.d/*.list && \
29
  file \
30
  && rm -rf /var/lib/apt/lists/*
31
 
32
- # 安装 nvtop
33
  RUN add-apt-repository ppa:flexiondotorg/nvtop && \
34
  apt-get upgrade -y && \
35
  apt-get install -y --no-install-recommends nvtop
36
-
37
- # 安装 nodejs
38
  RUN curl -sL https://deb.nodesource.com/setup_21.x | bash - && \
39
  apt-get install -y nodejs && \
40
  npm install -g configurable-http-proxy
41
 
42
- # 设置 Conda 环境,并将其安装在 /opt/conda
43
  ENV CONDA_AUTO_UPDATE_CONDA=false \
44
  PATH=/opt/conda/bin:$PATH
45
  RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \
@@ -59,39 +57,28 @@ RUN --mount=target=/root/packages.txt,source=packages.txt \
59
  && rm -rf /var/lib/apt/lists/*
60
  RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \
61
  bash /root/on_startup.sh
62
- RUN mkdir /data
63
  RUN --mount=target=requirements.txt,source=requirements.txt \
64
  pip install --no-cache-dir --upgrade -r requirements.txt
65
 
66
- # --- 核心调试与修复区域 ---
67
-
68
- # 1. 复制所有文件
69
- COPY . $HOME/app
70
 
71
- # 2. 【调试步骤一】检查刚复制进来的文件权限和内容
72
- RUN echo "--- [DEBUG] 步骤1:检查 COPY 后的文件状态 ---" && \
73
- ls -la $HOME/app && \
74
- echo "--- [DEBUG] 检查 start_server.sh 的文件类型和换行符 ---" && \
75
- file $HOME/app/start_server.sh && \
76
- head -n 1 $HOME/app/start_server.sh | cat -A
77
 
78
- # 3. 修复潜在的换行符问题,并强制赋予执行权限
79
- RUN echo "--- [FIX] 步骤2:修复换行符并设置执行权限 ---" && \
80
- dos2unix $HOME/app/start_server.sh && \
81
- chmod +x $HOME/app/start_server.sh
82
 
83
- # 4. 【调试步骤二】再次检查权限,确认 chmod 生效
84
- RUN echo "--- [DEBUG] 步骤3:最终确认文件权限 ---" && \
85
- ls -la $HOME/app
86
 
 
 
87
 
88
- # --- 调试结束 ---
89
-
90
- # (可选) 复制自定义登录页
91
- # 如果你没有这个文件,可以注释掉下面这行
92
- # COPY login.html /opt/conda/lib/python3.9/site-packages/jupyter_server/templates/login.html
93
 
94
- # 设置环境变量
95
  ENV PYTHONUNBUFFERED=1 \
96
  GRADIO_ALLOW_FLAGGING=never \
97
  GRADIO_NUM_PORTS=1 \
@@ -100,5 +87,5 @@ ENV PYTHONUNBUFFERED=1 \
100
  SYSTEM=spaces \
101
  SHELL=/bin/bash
102
 
103
- # --- 最终执行方案:使用 bash 解释器直接执行 ---
104
  CMD ["/bin/bash", "./start_server.sh"]
 
5
  ENV DEBIAN_FRONTEND=noninteractive \
6
  TZ=Europe/Paris
7
 
8
+ # 安装所有必要的工具,包括 file
9
  RUN rm -f /etc/apt/sources.list.d/*.list && \
10
  apt-get update && apt-get install -y --no-install-recommends \
11
  curl \
 
29
  file \
30
  && rm -rf /var/lib/apt/lists/*
31
 
32
+ # 安装 nvtop 和 nodejs
33
  RUN add-apt-repository ppa:flexiondotorg/nvtop && \
34
  apt-get upgrade -y && \
35
  apt-get install -y --no-install-recommends nvtop
 
 
36
  RUN curl -sL https://deb.nodesource.com/setup_21.x | bash - && \
37
  apt-get install -y nodejs && \
38
  npm install -g configurable-http-proxy
39
 
40
+ # 设置 Conda 环境
41
  ENV CONDA_AUTO_UPDATE_CONDA=false \
42
  PATH=/opt/conda/bin:$PATH
43
  RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \
 
57
  && rm -rf /var/lib/apt/lists/*
58
  RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \
59
  bash /root/on_startup.sh
 
60
  RUN --mount=target=requirements.txt,source=requirements.txt \
61
  pip install --no-cache-dir --upgrade -r requirements.txt
62
 
63
+ # --- 核心解决方案:创建并重定向到可写目录 ---
 
 
 
64
 
65
+ # 1. 在 /data 目录下创建 jupyter 需要的所有子目录
66
+ RUN mkdir -p /data/jupyter/config /data/jupyter/data /data/jupyter/runtime
 
 
 
 
67
 
68
+ # 2. 通过环境变量,强制 jupyter 使用 /data 下的目录
69
+ ENV JUPYTER_CONFIG_DIR=/data/jupyter/config
70
+ ENV JUPYTER_DATA_DIR=/data/jupyter/data
71
+ ENV JUPYTER_RUNTIME_DIR=/data/jupyter/runtime
72
 
73
+ # --- 解决方案结束 ---
 
 
74
 
75
+ # 复制所有项目文件
76
+ COPY . $HOME/app
77
 
78
+ # 确保脚本可执行(作为良好实践)
79
+ RUN chmod +x start_server.sh
 
 
 
80
 
81
+ # 设置其他环境变量
82
  ENV PYTHONUNBUFFERED=1 \
83
  GRADIO_ALLOW_FLAGGING=never \
84
  GRADIO_NUM_PORTS=1 \
 
87
  SYSTEM=spaces \
88
  SHELL=/bin/bash
89
 
90
+ # 使用最稳健的方式启动
91
  CMD ["/bin/bash", "./start_server.sh"]