55人参与 • 2025-09-22 • Docker
在 docker 中实现 nginx 无感重启(平滑重启)的几种方法:
您当前使用的方式是正确的,这是最标准的做法:
# 检查配置文件语法 docker exec agi-nginx nginx -t # 平滑重启(无中断服务) docker exec agi-nginx nginx -s reload
这种方式会:
如果使用 docker-compose:
# 重启单个容器 docker-compose restart nginx # 或者重新创建容器(会读取最新配置) docker-compose up -d --force-recreate nginx
#!/bin/bash
container_name="agi-nginx"
# 检查配置语法
if docker exec $container_name nginx -t; then
echo "配置文件检查通过,开始平滑重启..."
# 发送 reload 信号
docker exec $container_name nginx -s reload
# 等待重启完成
sleep 2
# 检查 nginx 状态
docker exec $container_name nginx -t
echo "nginx 平滑重启完成"
else
echo "配置文件有错误,请检查配置"
exit 1
fi
在 docker-compose.yml 中添加健康检查:
version: "3"
services:
nginx:
image: nginx:latest
container_name: agi-nginx
ports:
- "80:80"
- "443:443"
healthcheck:
test: ["cmd", "nginx", "-t"]
interval: 30s
timeout: 10s
retries: 3
对于生产环境,可以考虑:
# 蓝绿部署 # 1. 启动新版本的 nginx 容器 docker run -d --name nginx-new nginx:new-version # 2. 逐步将流量切换到新容器 # 3. 停止旧容器 docker stop agi-nginx
worker_shutdown_timeout 确保优雅关闭# nginx.conf 中的相关配置
worker_processes auto;
worker_shutdown_timeout 30s; # 优雅关闭超时时间
events {
worker_connections 1024;
}
http {
# 其他配置...
}
您当前使用的方式 docker exec agi-nginx nginx -s reload 是最推荐的做法,它确实实现了无感重启。
到此这篇关于在docker中实现nginx平滑重启的几种方法的文章就介绍到这了,更多相关nginx平滑重启方法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论