moxiaoying commited on
Commit
a2c9b98
·
verified ·
1 Parent(s): 285f68f

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +13 -9
Dockerfile CHANGED
@@ -15,8 +15,13 @@ RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /main main.go
15
  # --- Stage 2: Final Runtime Image ---
16
  FROM python:3.10-slim-bookworm
17
 
18
- WORKDIR /app
19
 
 
 
 
 
 
 
20
  # 安装系统依赖
21
  RUN apt-get update && apt-get install -y --no-install-recommends \
22
  curl \
@@ -30,21 +35,20 @@ RUN pip install --no-cache-dir requests webdavclient3
30
  # 如果你确定用的是 webdavclient3,那就改成 webdavclient3,但要确保脚本也对应修改
31
 
32
  # 从构建阶段复制编译好的 Go 应用
33
- COPY --from=build /main /app/main
34
 
35
  # 复制后台同步脚本和入口点脚本
36
- COPY sync_data.sh /app/sync_data.sh
37
- COPY entrypoint.sh /app/entrypoint.sh
38
 
39
  # 创建用于存储文件的目录
40
- RUN mkdir /app/files
41
 
42
  # 赋予脚本执行权限 (Go 应用也需要)
43
- RUN chmod +x /app/main /app/sync_data.sh /app/entrypoint.sh
44
 
45
  # --- 安全最佳实践:使用非 root 用户运行 ---
46
  # 创建非 root 用户和组
47
- RUN addgroup --system appgroup && adduser --system --ingroup appgroup appuser
48
 
49
  # 更改工作目录和数据目录的所有权给新用户
50
  # 同时,在这里就显式设置 /app/files 的权限!确保初始状态正确
@@ -54,13 +58,13 @@ RUN chown -R appuser:appgroup /app && \
54
  # 注意:这里只设置 /app/files 本身的权限,里面的内容由恢复脚本处理
55
 
56
  # 切换到非 root 用户
57
- USER appuser
58
 
59
  # 端口暴露 (Hugging Face 会处理)
60
  EXPOSE 3456
61
 
62
  # 设置入口点脚本
63
- ENTRYPOINT ["/app/entrypoint.sh"]
64
 
65
  # CMD ["/app/main"] # 如果 entrypoint.sh 负责启动 sync_data.sh,可以让 CMD 启动 Go 应用
66
  # 或者 entrypoint.sh 负责启动所有进程
 
15
  # --- Stage 2: Final Runtime Image ---
16
  FROM python:3.10-slim-bookworm
17
 
 
18
 
19
+ RUN adduser -D -u 1000 user
20
+ RUN mkdir -p /home/user/data && chown -R user:user /home/user/data
21
+
22
+ ENV HOME=/home/user \
23
+ PATH=/home/user/.local/bin:$PATH
24
+ WORKDIR $HOME/app
25
  # 安装系统依赖
26
  RUN apt-get update && apt-get install -y --no-install-recommends \
27
  curl \
 
35
  # 如果你确定用的是 webdavclient3,那就改成 webdavclient3,但要确保脚本也对应修改
36
 
37
  # 从构建阶段复制编译好的 Go 应用
38
+ COPY --from=build /main $HOME/app/main
39
 
40
  # 复制后台同步脚本和入口点脚本
41
+ COPY --chown=user sync_data.sh $HOME/app/sync_data.sh
42
+ COPY --chown=user entrypoint.sh $HOME/app/entrypoint.sh
43
 
44
  # 创建用于存储文件的目录
45
+ RUN mkdir $HOME/app/files
46
 
47
  # 赋予脚本执行权限 (Go 应用也需要)
48
+ RUN chmod +x $HOME/app/main $HOME/app/sync_data.sh $HOME/app/entrypoint.sh
49
 
50
  # --- 安全最佳实践:使用非 root 用户运行 ---
51
  # 创建非 root 用户和组
 
52
 
53
  # 更改工作目录和数据目录的所有权给新用户
54
  # 同时,在这里就显式设置 /app/files 的权限!确保初始状态正确
 
58
  # 注意:这里只设置 /app/files 本身的权限,里面的内容由恢复脚本处理
59
 
60
  # 切换到非 root 用户
61
+ USER user
62
 
63
  # 端口暴露 (Hugging Face 会处理)
64
  EXPOSE 3456
65
 
66
  # 设置入口点脚本
67
+ ENTRYPOINT ["/home/user/app/entrypoint.sh"]
68
 
69
  # CMD ["/app/main"] # 如果 entrypoint.sh 负责启动 sync_data.sh,可以让 CMD 启动 Go 应用
70
  # 或者 entrypoint.sh 负责启动所有进程