Spaces:
Runtime error
Runtime error
Update Dockerfile
Browse files- 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 |
-
#
|
| 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
|
| 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 |
-
#
|
| 72 |
-
RUN
|
| 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 |
-
#
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
|
| 83 |
-
#
|
| 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 |
-
#
|
| 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"]
|