cacode commited on
Commit
e520895
·
verified ·
1 Parent(s): be2a1d7

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +85 -77
Dockerfile CHANGED
@@ -1,78 +1,86 @@
1
- FROM debian:bookworm-slim
2
-
3
- ENV DEBIAN_FRONTEND=noninteractive
4
- ENV TZ=Etc/UTC
5
- ENV PORT=7860
6
- ENV HOME=/home/coder
7
- ENV PIP_DISABLE_PIP_VERSION_CHECK=1
8
- ENV PYTHONDONTWRITEBYTECODE=1
9
- ENV PYTHONUNBUFFERED=1
10
-
11
- # 1) 系统与开发工具(重度版)
12
- RUN apt-get update && apt-get install -y --no-install-recommends \
13
- ca-certificates curl wget git bash sudo tini gnupg dirmngr jq \
14
- # 常用工具
15
- unzip zip xz-utils less vim nano openssh-client \
16
- # C/C++
17
- build-essential gcc g++ make cmake ninja-build gdb lldb clang clangd pkg-config \
18
- # Python
19
- python3 python3-pip python3-venv python3-dev \
20
- # Java + build tools
21
- openjdk-17-jdk maven gradle \
22
- # Node.js
23
- nodejs npm \
24
- # 其他
25
- ripgrep fd-find \
26
- && rm -rf /var/lib/apt/lists/*
27
-
28
- # 2) 安装 code-server
29
- RUN curl -fsSL https://code-server.dev/install.sh | sh
30
-
31
- # 3) 安装 Node 包管理器补充
32
- RUN npm install -g yarn pnpm
33
-
34
- # 4) Python 常见依赖(可按需删减)
35
- RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
36
- python3 -m pip install --no-cache-dir \
37
- numpy pandas scipy scikit-learn matplotlib seaborn plotly \
38
- jupyter jupyterlab ipykernel notebook \
39
- requests httpx aiohttp pyyaml python-dotenv tqdm rich \
40
- flask fastapi uvicorn[standard] pydantic \
41
- sqlalchemy alembic psycopg2-binary redis \
42
- pytest pytest-cov black isort mypy ruff pre-commit
43
-
44
- # 5) 安装 Rust(stable)
45
- RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
46
- ENV PATH="/root/.cargo/bin:${PATH}"
47
-
48
- # 6) 安装 Go(Debian 包,稳定即可)
49
- RUN apt-get update && apt-get install -y --no-install-recommends golang-go && \
50
- rm -rf /var/lib/apt/lists/*
51
-
52
- # 7) 安装 Codex CLI(若仓库不可用,不阻断)
53
- RUN npm install -g @openai/codex || true
54
-
55
- # 8) 创建用户
56
- RUN useradd -m -u 1000 -s /bin/bash coder && \
57
- echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
58
- mkdir -p /home/coder/.config/code-server /home/coder/.codex && \
59
- chown -R coder:coder /home/coder
60
-
61
- # 9) 预装常用 VSCode 扩展(失败不阻断)
62
- RUN code-server --install-extension ms-python.python || true && \
63
- code-server --install-extension ms-toolsai.jupyter || true && \
64
- code-server --install-extension ms-vscode.cpptools || true && \
65
- code-server --install-extension llvm-vs-code-extensions.vscode-clangd || true && \
66
- code-server --install-extension vscjava.vscode-java-pack || true && \
67
- code-server --install-extension redhat.vscode-yaml || true && \
68
- code-server --install-extension esbenp.prettier-vscode || true
69
-
70
- COPY --chown=coder:coder start.sh /usr/local/bin/start.sh
71
- RUN chmod +x /usr/local/bin/start.sh
72
-
73
- USER coder
74
- WORKDIR /home/coder
75
-
76
- EXPOSE 7860
77
- ENTRYPOINT ["/usr/bin/tini", "--"]
 
 
 
 
 
 
 
 
78
  CMD ["/usr/local/bin/start.sh"]
 
1
+ FROM debian:bookworm-slim
2
+
3
+ ENV DEBIAN_FRONTEND=noninteractive
4
+ ENV TZ=Etc/UTC
5
+ ENV PORT=7860
6
+ ENV HOME=/home/coder
7
+ ENV PIP_DISABLE_PIP_VERSION_CHECK=1
8
+ ENV PYTHONDONTWRITEBYTECODE=1
9
+ ENV PYTHONUNBUFFERED=1
10
+
11
+ # -----------------------------
12
+ # 1) 基础系统 + 重度开发工具链
13
+ # -----------------------------
14
+ RUN apt-get update && apt-get install -y --no-install-recommends \
15
+ ca-certificates curl wget git bash sudo tini gnupg dirmngr jq \
16
+ unzip zip xz-utils less vim nano openssh-client \
17
+ # C/C++
18
+ build-essential gcc g++ make cmake ninja-build gdb lldb clang clangd pkg-config \
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
+ ripgrep fd-find procps \
27
+ # rust/go(重度开发常见)
28
+ rustc cargo golang-go \
29
+ && rm -rf /var/lib/apt/lists/*
30
+
31
+ # -----------------------------
32
+ # 2) 安装 code-server
33
+ # -----------------------------
34
+ RUN curl -fsSL https://code-server.dev/install.sh | sh
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 \
50
+ jupyter jupyterlab ipykernel notebook \
51
+ requests httpx aiohttp pyyaml python-dotenv tqdm rich \
52
+ flask fastapi uvicorn[standard] pydantic \
53
+ sqlalchemy alembic psycopg2-binary redis \
54
+ pytest pytest-cov black isort mypy ruff pre-commit
55
+
56
+ # -----------------------------
57
+ # 5) 安装 Codex CLI(可选,失败不阻断)
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
+ # 可选:给 coder 预装常用 VS Code 扩展(失败不阻断)
70
+ RUN su - coder -c "code-server --install-extension ms-python.python || true" && \
71
+ su - coder -c "code-server --install-extension ms-toolsai.jupyter || true" && \
72
+ su - coder -c "code-server --install-extension ms-vscode.cpptools || true" && \
73
+ su - coder -c "code-server --install-extension llvm-vs-code-extensions.vscode-clangd || true" && \
74
+ su - coder -c "code-server --install-extension vscjava.vscode-java-pack || true" && \
75
+ su - coder -c "code-server --install-extension redhat.vscode-yaml || true" && \
76
+ su - coder -c "code-server --install-extension esbenp.prettier-vscode || true"
77
+
78
+ COPY --chown=coder:coder start.sh /usr/local/bin/start.sh
79
+ RUN chmod +x /usr/local/bin/start.sh
80
+
81
+ USER coder
82
+ WORKDIR /home/coder
83
+
84
+ EXPOSE 7860
85
+ ENTRYPOINT ["/usr/bin/tini", "--"]
86
  CMD ["/usr/local/bin/start.sh"]