如何在 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 nginx
和 docker 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 重新加载
我一直在试验 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 nginx
和 docker 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 重新加载