如何在 Docker 容器中 运行 Nginx 并将其设置为每 6 小时重新加载一次配置?
How to run Nginx within a Docker container and set it up to reload its configuration every 6h?
我在 Docker 容器中运行 NGINX,我正在尝试找到一种使用 docker run
启动它的方法,以便命令我的 NGINX 重新加载其配置每 6 小时。我需要这样做,因为我也在另一个容器中使用 Certbot,并且我希望 SSL 证书更新过程自动化和应用,为此我需要 NGINX 按计划重新加载其配置。
此时我使用以下 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
没有显示任何内容。
我想从两个方面来解决这个问题:
- 如何输出到终端/docker 日志 (
echo
?) 成功 nginx -s reload
修改我的 /bin/bash -c 'while :; do sleep 6h & wait ${!}; nginx -s reload; done & nginx -g "daemon off;"'
?
- 万一我遗漏了什么(我是 Docker 和 NGINX 的初学者):你有没有找到一种方法来以更合理的方式获得我想要的结果?
请不要建议Docker撰写。
感谢您的关注。
好的,我开始工作了。
我将 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
关于配置重新加载的问题。
我在 Docker 容器中运行 NGINX,我正在尝试找到一种使用 docker run
启动它的方法,以便命令我的 NGINX 重新加载其配置每 6 小时。我需要这样做,因为我也在另一个容器中使用 Certbot,并且我希望 SSL 证书更新过程自动化和应用,为此我需要 NGINX 按计划重新加载其配置。
此时我使用以下 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
没有显示任何内容。
我想从两个方面来解决这个问题:
- 如何输出到终端/docker 日志 (
echo
?) 成功nginx -s reload
修改我的/bin/bash -c 'while :; do sleep 6h & wait ${!}; nginx -s reload; done & nginx -g "daemon off;"'
? - 万一我遗漏了什么(我是 Docker 和 NGINX 的初学者):你有没有找到一种方法来以更合理的方式获得我想要的结果?
请不要建议Docker撰写。
感谢您的关注。
好的,我开始工作了。 我将 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
关于配置重新加载的问题。