habppyar commited on
Commit
56a9867
·
verified ·
1 Parent(s): cfdcdcf

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +31 -35
Dockerfile CHANGED
@@ -1,39 +1,35 @@
1
- # 基础镜像选择(Node 20官方精简版)
2
  FROM node:20-slim
3
 
4
- # 设置非交互式环境
5
- ENV DEBIAN_FRONTEND=noninteractive \
6
- # 核心修复:将虚拟环境路径和 npm 全局路径合并到 PATH
7
- VIRTUAL_ENV=/app/.venv \
8
- PATH="/app/.venv/bin:/usr/local/bin:${PATH}" \
9
- HF_HOME=/app/.cache/huggingface \
10
- PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
11
 
12
- # 安装系统依赖(包含 python3-venv
 
13
  RUN apt-get update && apt-get install -y --no-install-recommends \
14
- ca-certificates curl bash git tini python3 python3-pip python3-venv \
15
- && rm -rf /var/lib/apt/lists/*
16
-
17
- # 创建目录
18
- RUN mkdir -p /app /app/.cache/huggingface
19
-
20
- WORKDIR /app
21
-
22
- # --- 关键整合步骤:安装与验证合二为一 ---
23
- # 利用 && 连接命令,确保在同一 Shell 层级下执行,环境变量有效
24
- RUN python3 -m venv $VIRTUAL_ENV \
25
- # 1. 升级 pip 并安装 Python 依赖
26
- && pip install --upgrade pip setuptools wheel \
27
- && pip install huggingface_hub \
28
- # 2. 安装 Node.js局工具
29
- && npm install -g opencode-ai \
30
- # 3. 立即在同一层级进行验证(此时 PATH 依然生效)
31
- && opencode-ai --version \
32
- && python3 -c "import huggingface_hub; print('Hugging Face Hub installed successfully')"
33
-
34
- # 复制代码
35
- COPY . /app
36
-
37
- # 启动命令
38
- ENTRYPOINT ["/usr/bin/tini", "--"]
39
- CMD ["/app/entrypoint.sh"]
 
1
+ # 基础镜像
2
  FROM node:20-slim
3
 
4
+ # 1. 关键修正:先切换为 root 用户,以便进行系统级安装和权限修改
5
+ USER root
 
 
 
 
 
6
 
7
+ # 2. 关键修正:直接安装 Python 依赖到系统环境避开虚拟环境导致的 PATH 混乱
8
+ # 安装 python3 和 pip,并直接用 pip 安装 huggingface_hub(不要用虚拟环境)
9
  RUN apt-get update && apt-get install -y --no-install-recommends \
10
+ python3 python3-pip git \
11
+ && rm -rf /var/lib/apt/lists/* \
12
+ # 直接升级系统 pip 并安装库(这样命令在系统路径里,谁都找得到)
13
+ && pip3 install --upgrade pip huggingface_hub
14
+
15
+ # 3. 关键修正:安装 npm 包。因为 USER root,npm -g 会安装到 /usr/local/bin,这是默认 PATH
16
+ RUN npm install -g opencode-ai
17
+
18
+ # 4. 设置工作目录
19
+ WORKDIR /home/node/app
20
+
21
+ # 5. 关键修正:将目录所有权赋予 node 用户,这样 node 用户有读写权(解决持久化/挂载目录的权限问题)
22
+ RUN chown node:node /home/node/app
23
+
24
+ # 6. 切换回非 root 用户(安且解决挂载权限问题)
25
+ USER node
26
+
27
+ # 复制代码(此时是 node 用户身份,文件属于 node 用户)
28
+ COPY --chown=node . .
29
+
30
+ # 验证安装(此时 PATH 包含 /usr/local/bin,能直接找到 opencode-ai)
31
+ RUN opencode-ai --version && \
32
+ python3 -c "import huggingface_hub; print('Success')"
33
+
34
+ EXPOSE 7860
35
+ CMD ["sh", "-c", "node server.js"]