我正在一个Docker容器中运行NGINX,我试图找到一种使用docker run启动它的方法,这种方式可以命令我的NGINX每6h重新加载它的配置。我需要这样做,因为我还在另一个容器中使用Certbot,我希望SSL证书更新过程能够自动化并应用,为此,我将按照计划重新加载它的配置。
此时,我使用了折叠docker run序列(或多或少):
docker run --restart=always -d -p 80:80 -p 443:443 \ --name=nginx_RevPr nginx:latest \ /bin/bash -c 'while :; do sleep 6h & wait ${!}; nginx -s reload; done & nginx -g "daemon off;"'
以这种方式创建的容器运行和工作正常。我唯一的问题是,实际上我不知道NGINX是否真的实现了它的配置。docker logs没有显示任何东西。
我想用两种方式来处理这个问题:
echo?)成功的nginx -s reload修改了我的/bin/bash -c 'while :; do sleep 6h & wait ${!}; nginx -s reload; done & nginx -g "daemon off;"'请不要建议码头工人作曲。
感谢您的关注。
发布于 2019-03-24 09:05:31
好吧,我让它起作用了。我将CMD args行更改为:
/bin/sh -c 'while :; do sleep 6h & wait ${!}; nginx -s reload && echo NGINX config reload for Certbot - OK; done & nginx -g "daemon off;"'
我的主要错误是使用/bin/bash输入CMD,在那里我应该做/bin/sh。下面的nginx -s reload && echo NGINX config reload for Certbot - OK解决了配置重新加载相关的docker logs初始化问题。
https://stackoverflow.com/questions/55318428
复制相似问题