Spaces:
Running
Running
Update Dockerfile
Browse files- Dockerfile +29 -64
Dockerfile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
FROM
|
| 2 |
|
| 3 |
ENV DEBIAN_FRONTEND=noninteractive
|
| 4 |
ENV TZ=Etc/UTC
|
|
@@ -8,42 +8,28 @@ ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
| 8 |
ENV PYTHONDONTWRITEBYTECODE=1
|
| 9 |
ENV PYTHONUNBUFFERED=1
|
| 10 |
|
| 11 |
-
# -
|
| 12 |
-
|
| 13 |
-
|
|
|
|
| 14 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 15 |
-
ca-certificates curl
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
# Python
|
| 20 |
-
python3 python3-pip python3-venv python3-dev \
|
| 21 |
-
# Java + build tools
|
| 22 |
-
openjdk-17-jdk maven gradle \
|
| 23 |
-
# Node.js
|
| 24 |
nodejs npm \
|
| 25 |
-
#
|
| 26 |
-
|
| 27 |
-
#
|
| 28 |
-
|
| 29 |
&& rm -rf /var/lib/apt/lists/*
|
| 30 |
|
| 31 |
-
# -
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
# -----------------------------
|
| 37 |
-
# 3) Node 包管理器补充
|
| 38 |
-
# -----------------------------
|
| 39 |
-
RUN npm install -g yarn pnpm
|
| 40 |
-
|
| 41 |
-
# -----------------------------
|
| 42 |
-
# 4) 修复 PEP668:用 venv 安装 Python 包
|
| 43 |
-
# -----------------------------
|
| 44 |
-
RUN python3 -m venv /opt/venv
|
| 45 |
-
ENV PATH="/opt/venv/bin:${PATH}"
|
| 46 |
|
|
|
|
| 47 |
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
|
| 48 |
pip install --no-cache-dir \
|
| 49 |
numpy pandas scipy scikit-learn matplotlib seaborn plotly \
|
|
@@ -53,42 +39,21 @@ RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
|
|
| 53 |
sqlalchemy alembic psycopg2-binary redis \
|
| 54 |
pytest pytest-cov black isort mypy ruff pre-commit
|
| 55 |
|
| 56 |
-
#
|
| 57 |
-
|
| 58 |
-
# -----------------------------
|
| 59 |
-
RUN npm install -g @openai/codex || true
|
| 60 |
-
|
| 61 |
-
# -----------------------------
|
| 62 |
-
# 6) 创建运行用户
|
| 63 |
-
# -----------------------------
|
| 64 |
-
RUN useradd -m -u 1000 -s /bin/bash coder && \
|
| 65 |
-
echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
| 66 |
-
mkdir -p /home/coder/.config/code-server /home/coder/.codex && \
|
| 67 |
-
chown -R coder:coder /home/coder
|
| 68 |
|
| 69 |
-
#
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
ARG CODEX_VSIX_URL=""
|
| 75 |
-
# 兜底:如果没有 VSIX,则尝试这些扩展 ID(可能因 OpenVSX 不可用而失败)
|
| 76 |
-
ARG CODEX_EXTENSION_ID="openai.chatgpt"
|
| 77 |
|
| 78 |
-
|
|
|
|
|
|
|
| 79 |
su - coder -c "code-server --install-extension ms-toolsai.jupyter || true" && \
|
| 80 |
-
su - coder -c "code-server --install-extension ms-vscode.cpptools || true" && \
|
| 81 |
su - coder -c "code-server --install-extension llvm-vs-code-extensions.vscode-clangd || true" && \
|
| 82 |
-
su - coder -c "code-server --install-extension
|
| 83 |
-
su - coder -c "code-server --install-extension redhat.vscode-yaml || true" && \
|
| 84 |
-
su - coder -c "code-server --install-extension esbenp.prettier-vscode || true" && \
|
| 85 |
-
if [ -n "${CODEX_VSIX_URL}" ]; then \
|
| 86 |
-
curl -fL "${CODEX_VSIX_URL}" -o /tmp/codex.vsix && \
|
| 87 |
-
su - coder -c "code-server --install-extension /tmp/codex.vsix || true" && \
|
| 88 |
-
rm -f /tmp/codex.vsix ; \
|
| 89 |
-
else \
|
| 90 |
-
su - coder -c "code-server --install-extension ${CODEX_EXTENSION_ID} || true" ; \
|
| 91 |
-
fi
|
| 92 |
|
| 93 |
COPY --chown=coder:coder start.sh /usr/local/bin/start.sh
|
| 94 |
RUN chmod +x /usr/local/bin/start.sh
|
|
|
|
| 1 |
+
FROM python:3.11-slim-bookworm
|
| 2 |
|
| 3 |
ENV DEBIAN_FRONTEND=noninteractive
|
| 4 |
ENV TZ=Etc/UTC
|
|
|
|
| 8 |
ENV PYTHONDONTWRITEBYTECODE=1
|
| 9 |
ENV PYTHONUNBUFFERED=1
|
| 10 |
|
| 11 |
+
# 可固定 code-server 版本,提升可重复性
|
| 12 |
+
ARG CODE_SERVER_VERSION=4.109.2
|
| 13 |
+
|
| 14 |
+
# 1) 仅安装核心依赖(减重)
|
| 15 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 16 |
+
ca-certificates curl git bash sudo tini \
|
| 17 |
+
# Java
|
| 18 |
+
openjdk-17-jdk-headless maven \
|
| 19 |
+
# Node
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
nodejs npm \
|
| 21 |
+
# C/C++
|
| 22 |
+
build-essential g++ gcc make cmake ninja-build gdb clang clangd \
|
| 23 |
+
# 常用工具
|
| 24 |
+
jq procps unzip \
|
| 25 |
&& rm -rf /var/lib/apt/lists/*
|
| 26 |
|
| 27 |
+
# 2) 安装 code-server(固定版本)
|
| 28 |
+
RUN curl -fsSL "https://github.com/coder/code-server/releases/download/v${CODE_SERVER_VERSION}/code-server_${CODE_SERVER_VERSION}_amd64.deb" -o /tmp/code-server.deb \
|
| 29 |
+
&& dpkg -i /tmp/code-server.deb \
|
| 30 |
+
&& rm -f /tmp/code-server.deb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
|
| 32 |
+
# 3) Python 核心依赖(减重版)
|
| 33 |
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
|
| 34 |
pip install --no-cache-dir \
|
| 35 |
numpy pandas scipy scikit-learn matplotlib seaborn plotly \
|
|
|
|
| 39 |
sqlalchemy alembic psycopg2-binary redis \
|
| 40 |
pytest pytest-cov black isort mypy ruff pre-commit
|
| 41 |
|
| 42 |
+
# 4) Codex CLI
|
| 43 |
+
RUN npm install -g @openai/codex
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
+
# 5) 创建运行用户
|
| 46 |
+
RUN useradd -m -u 1000 -s /bin/bash coder \
|
| 47 |
+
&& echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
|
| 48 |
+
&& mkdir -p /home/coder/.config/code-server /home/coder/.codex \
|
| 49 |
+
&& chown -R coder:coder /home/coder
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
+
# 6) 仅预装必要扩展(减少构建失败概率)
|
| 52 |
+
RUN su - coder -c "code-server --install-extension openai.chatgpt || true" && \
|
| 53 |
+
su - coder -c "code-server --install-extension ms-python.python || true" && \
|
| 54 |
su - coder -c "code-server --install-extension ms-toolsai.jupyter || true" && \
|
|
|
|
| 55 |
su - coder -c "code-server --install-extension llvm-vs-code-extensions.vscode-clangd || true" && \
|
| 56 |
+
su - coder -c "code-server --install-extension redhat.java || true"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
| 58 |
COPY --chown=coder:coder start.sh /usr/local/bin/start.sh
|
| 59 |
RUN chmod +x /usr/local/bin/start.sh
|