ffzeroHua commited on
Commit
58ba8e5
·
verified ·
1 Parent(s): 3ac739c

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +16 -14
Dockerfile CHANGED
@@ -1,42 +1,44 @@
1
  # 选用精简版 Python 3.10 镜像
2
  FROM python:3.10-slim
3
 
4
- # 设置环境变量,防止安装过程中出现交互式弹窗
5
  ENV DEBIAN_FRONTEND=noninteractive \
6
  TZ=Asia/Shanghai \
7
  PYTHONUNBUFFERED=1
8
 
9
  WORKDIR /app
10
 
11
- # 1. 预先安装 sudo 和基础下载工具
12
- # 因为官方 install.sh 脚本部强依赖 sudo 命令来进行环境配置
 
 
 
 
 
13
  RUN apt-get update -y && \
14
  apt-get install -y --no-install-recommends sudo wget curl ca-certificates && \
15
  rm -rf /var/lib/apt/lists/*
16
 
17
- # 2. 当前仓库里的所有文件 (包括 install.sh, app.py, start.sh 等) 贝进容器
18
  COPY . /app/
19
 
20
- # 3. 赋予官方安装脚本执行权限直接运行它
21
- # 此时处于 docker 构建阶段,默认是 root 身份,完全符合 install.sh 的要求
22
  RUN chmod +x /app/install.sh && \
23
  /app/install.sh
24
 
25
- # 4. 安装我们的 Python 业务依赖
26
  RUN pip install --no-cache-dir flask requests gradio_client fastapi uvicorn python-multipart websockets
27
 
28
- # 5. 权限收尾:将 /app 目录下所有生成文件 (如 QQ, napcat文件夹, .so文件) 的所有权
29
- # 移交给 HuggingFace 的默认非 root 用户 (UID 1000),防止运行时出现权限拒绝
30
  RUN chown -R 1000:1000 /app
31
 
32
- # 6. 切换到 root 用户 (HuggingFace Spaces 强制安全要求)
33
  USER 1000
34
 
35
- # 7. 赋予我们自己的业务启动脚本执行权限
36
  RUN chmod +x /app/start.sh
37
 
38
- # 8. 暴露所需的端口
39
- EXPOSE 7860 7667 7668 9917
40
 
41
- # 9. 启动容器
42
  CMD ["/app/start.sh"]
 
1
  # 选用精简版 Python 3.10 镜像
2
  FROM python:3.10-slim
3
 
4
+ # 设置环境变量,防止弹窗
5
  ENV DEBIAN_FRONTEND=noninteractive \
6
  TZ=Asia/Shanghai \
7
  PYTHONUNBUFFERED=1
8
 
9
  WORKDIR /app
10
 
11
+ # ==========================================
12
+ # 关键修复:在系统正式创建 UID 1000 的账户
13
+ # 这样 screen 的 getpwuid() 就能成功识别身份了
14
+ # ==========================================
15
+ RUN useradd -m -u 1000 hfuser
16
+
17
+ # 安装基础环境和 sudo (供 install.sh 内部调用)
18
  RUN apt-get update -y && \
19
  apt-get install -y --no-install-recommends sudo wget curl ca-certificates && \
20
  rm -rf /var/lib/apt/lists/*
21
 
22
+ # 将仓库所有文件拷
23
  COPY . /app/
24
 
25
+ # 赋予官方脚本执行权限并以 root 身份运行它 (此时在 docker 构建期间,默认是 root)
 
26
  RUN chmod +x /app/install.sh && \
27
  /app/install.sh
28
 
29
+ # 安装的 Python 业务依赖
30
  RUN pip install --no-cache-dir flask requests gradio_client fastapi uvicorn python-multipart websockets
31
 
32
+ # 将 /app 目录的所有权移交给 UID 1000
 
33
  RUN chown -R 1000:1000 /app
34
 
35
+ # 切换到刚刚注册的 1000 用户身份 (HuggingFace 强制要求)
36
  USER 1000
37
 
 
38
  RUN chmod +x /app/start.sh
39
 
40
+ # 暴露端口
41
+ EXPOSE 7860 7667 7668
42
 
43
+ # 启动
44
  CMD ["/app/start.sh"]