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

How to restart nginx service in Docker nginx image (`service nginx restart`) without container stopping?

我一直在试验 nginx 使用 Docker 图片 nginx

docker run -d --name nginx nginx
docker exec -ti nginx bash
# <edit /etc/nginx/conf.d files>

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

有什么方法可以重新启动 nginx 以使其在不停止容器的情况下加载已编辑的配置文件?

nginx -t 检查配置是否正确

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

使用-scommand line参数再次调用NGINX

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

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

  • 停止
  • 退出
  • 重新打开
  • 重新加载

reload command 保留 Nginx 服务器 运行,因为它会重新加载更新的配置文件。如果 Nginx 注意到任何配置文件中的语法错误,重新加载将中止并且服务器将根据旧配置文件保留 运行。重载比重启Nginx更安全

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