如何在 Docker nginx 镜像中重新启动 nginx 服务(`service nginx restart`)而不停止容器?

Shu*_*eng 3 cloud nginx docker

我一直在尝试nginx使用 Docker image nginx

docker run -d --name nginx nginx
docker exec -ti nginx bash
# <edit /etc/nginx/conf.d files>
Run Code Online (Sandbox Code Playgroud)

现在,为了加载已编辑的/etc/nginx/conf.d文件,我执行service nginx restart,这会导致容器停止,因为 init 进程 ( nginx) 终止。因此,我需要执行docker start nginxdocker exec -ti nginx bash恢复。

有没有办法重新启动nginx以加载编辑后的配置文件而不停止容器?

小智 8

使用-s 命令行参数再次调用 NGINX 。

例如,/usr/bin/nginx -s stop将停止 NGINX 服务器。

与 -s 命令一起使用的其他信号是:

  • 停止
  • 辞职
  • 重新开放
  • 重新加载

reload 命令在重新加载更新的配置文件时使 Nginx 服务器保持运行。如果 Nginx 发现任何配置文件中存在语法错误,则重新加载将中止,并且服务器将继续基于旧配置文件运行。重新加载比重新启动 Nginx 更安全。

示例: /usr/bin/nginx -s 重新加载


小智 7

nginx -t检查配置是否良好

nginx -s reload重新加载配置而不重新启动