sehsapneb commited on
Commit
9de43f5
·
verified ·
1 Parent(s): b80edd7

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +28 -27
Dockerfile CHANGED
@@ -1,35 +1,36 @@
1
  # 使用轻量级的 Nginx Alpine 镜像
2
  FROM nginx:alpine
3
 
4
- # 安装 gettext 包,它包含 envsubst 工具
5
- # apk update && apk add --no-cache gettext # 旧版 Alpine 可能需要
6
- RUN apk add --no-cache gettext # 新版 Alpine 可以直接这样
7
-
8
- # 修改主 Nginx 配置文件 /etc/nginx/nginx.conf:
9
- # pid 文件的路径更改为 /tmp/nginx.pid
10
- # 注释掉 'user nginx;' 指令 (如果之前还没做或确保它被正确处理)
11
- RUN sed -i -E 's#^[[:space:]]*pid[[:space:]]+.+nginx\.pid[[:space:]]*;#pid /tmp/nginx.pid;#g' /etc/nginx/nginx.conf && \
12
- sed -i -E 's#^([[:space:]]*user[[:space:]]+nginx[[:space:]]*;)#\#\1#g' /etc/nginx/nginx.conf
13
-
14
- # 移除默认的 Nginx 欢迎页面配置 (如果存在)
15
- # 我们将通过 entrypoint.sh 生成 default.conf
 
 
 
 
 
 
 
 
 
 
 
16
  RUN rm -f /etc/nginx/conf.d/default.conf
17
 
18
- # 创建用于存放模板的目录
19
- RUN mkdir -p /etc/nginx/templates
20
 
21
- # Nginx 配置模板复制到镜像中
22
- COPY nginx.conf.template /etc/nginx/templates/nginx.conf.template
23
-
24
- # 将入口点脚本复制到镜像中并赋予执行权限
25
- COPY entrypoint.sh /entrypoint.sh
26
- RUN chmod +x /entrypoint.sh
27
-
28
- # 暴露端口
29
  EXPOSE 7860
30
 
31
- # 设置入口点脚本
32
- ENTRYPOINT ["/entrypoint.sh"]
33
-
34
- # CMD 可以被 ENTRYPOINT 覆盖,这里可以保留一个默认的,但实际由 entrypoint.sh 的 exec 启动
35
- # CMD ["nginx", "-g", "daemon off;"]
 
1
  # 使用轻量级的 Nginx Alpine 镜像
2
  FROM nginx:alpine
3
 
4
+ # 修改主 Nginx 配置文件 /etc/nginx/nginx.conf
5
+ # 使用 -E 启用扩展正则表达式,并使用 # 作为 sed 的分隔符以避免路径中 / 的冲突
6
+
7
+ # 1. 修改 PID 文件路径:
8
+ # 目标是找到类似 'pid /run/nginx.pid;' 的行 (允许路径前后有不同数量的空格)
9
+ # 并将其替换为 'pid /tmp/nginx.pid;'
10
+ # [[:space:]]+ 匹配一个或多个空格/制表符。
11
+ # [[:space:]]* 匹配零个或多个空格/制表符。
12
+ # \. 匹配一个实际的点号 '.'
13
+ RUN sed -i -E 's#^[[:space:]]*pid[[:space:]]+/run/nginx\.pid[[:space:]]*;#pid /tmp/nginx.pid;#g' /etc/nginx/nginx.conf
14
+
15
+ # 2. 注释掉 'user' 指令:
16
+ # 目标是找到类似 'user nginx;' 的行 (允许 user 和 nginx 之间以及行尾有不同数量的空格)
17
+ # 并在行首添加 '#' 注释符。
18
+ # \1 代表第一个捕获组的内容。
19
+ RUN sed -i -E 's#^([[:space:]]*user[[:space:]]+nginx[[:space:]]*;)#\#\1#g' /etc/nginx/nginx.conf
20
+
21
+ # (可选的调试步骤,Hugging Face 的构建日志可能不显示 RUN 命令的输出)
22
+ # RUN echo "DEBUG: Content of /etc/nginx/nginx.conf after sed modifications:"
23
+ # RUN cat /etc/nginx/nginx.conf
24
+ # RUN echo "DEBUG: End of nginx.conf content"
25
+
26
+ # 移除默认的 Nginx 欢迎页面配置
27
  RUN rm -f /etc/nginx/conf.d/default.conf
28
 
29
+ # 将我们自定义的 nginx.conf (包含 server 块) 复制到容器的 Nginx 配置目录中
30
+ COPY nginx.conf /etc/nginx/conf.d/nginx.conf
31
 
32
+ # 暴露容器的 7860 端口 (与 nginx.conf 中的 listen 端口一致)
 
 
 
 
 
 
 
33
  EXPOSE 7860
34
 
35
+ # 启动 Nginx 服务,并保持在前台运行
36
+ CMD ["nginx", "-g", "daemon off;"]