我在 Docker 容器中运行 Nginx,我需要定期重新加载其配置以获取更新的 Letsecnrypt SSL 证书。
在 docker-compose
文件中我有以下内容
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
据我所知,应该每 6 小时重新加载配置并重新启动 Nginx。但是,它不起作用。 SSL 证书已更新,但 Nginx 未获取。
关于如何每隔几个小时正确重新加载 Letsencrypt SSL 证书有什么想法吗?
2019 年 8 月 8 日更新
根据我的理解,这个问题与我挂载到容器中的证书文件实际上是符号链接(symbolic link)有关,而符号链接(symbolic link)不能很好地与 Docker 配合使用。
最佳答案
如果您能够使用主机的 crontab 进行调度,这应该可行:
0 */6 * * * docker exec <nginx_container_id> nginx -s reload
通过Source
然后不要指定您在问题中尝试的等待和重新加载的自定义命令。只需编排 reload
来自主机的 cron。
但是,如果您不能在您的环境中使用主机的 cron,您将需要另一种解决方案...
关于docker - 在 Docker 上重新加载 Letsencrypt 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57184669/