Mat*_*rix 2 nginx docker-cloud docker-container
我们使用Nginx作为docker-cloud服务的反向代理.每当新服务在docker cloud上部署或者服务在docker-cloud上获得新url时,都会实现一个脚本来更新Nginx的配置文件.
Nginx和脚本已分别在docker容器中运行.Nginx配置文件安装在主机(ECS)中.使用脚本更新配置文件后,需要重新加载Nginx才能应用更改.
首先,我想知道这是否是更新Nginx配置文件的最佳方式,以及在没有任何停机时重新加载Nginx的最佳方法是什么?
我应该在每次更新后重新创建Nginx容器吗?如果是这样,怎么样?
或者可以通过监视配置文件中的更改(使用脚本)从主机重新加载Nginx并使用以下命令重新加载它?
docker exec NginxcontainerID | nginx -s reload
Run Code Online (Sandbox Code Playgroud)
我应该在每次更新后重新创建Nginx容器吗?如果是这样,怎么样?
不,您只需要在大多数时间重新加载nginx服务.您可以使用:
docker exec nginxcontainername/id nginx -s reload
Run Code Online (Sandbox Code Playgroud)
要么
docker kill -s HUP nginxcontainername/id
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用自定义映像并检查nginx配置校验和,并在它发生变化时重新加载nginx.示例脚本:
nginx "$@"
oldcksum=`cksum /etc/nginx/conf.d/default.conf`
inotifywait -e modify,move,create,delete -mr --timefmt '%d/%m/%y %H:%M' --format '%T' \
/etc/nginx/conf.d/ | while read date time; do
newcksum=`cksum /etc/nginx/conf.d/default.conf`
if [ "$newcksum" != "$oldcksum" ]; then
echo "At ${time} on ${date}, config file update detected."
oldcksum=$newcksum
nginx -s reload
fi
done
Run Code Online (Sandbox Code Playgroud)
你需要安装inotifywait包.
| 归档时间: |
|
| 查看次数: |
2054 次 |
| 最近记录: |