【问题标题】:Reload a Letsencrypt certificate on Docker在 Docker 上重新加载 Letsencrypt 证书
【发布时间】:2019-12-02 17:03:40
【问题描述】:

我在 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 日更新

据我了解,这个问题与我挂载到容器中的证书文件实际上是符号链接这一事实有关,而符号链接不能很好地与 Docker 配合使用。

【问题讨论】:

    标签: docker nginx lets-encrypt


    【解决方案1】:

    如果您能够使用主机的 crontab 进行调度,这应该可以工作:

    0 */6 * * * docker exec <nginx_container_id> nginx -s reload

    通过Source

    然后不要使用您在问题中尝试的等待和重新加载来指定自定义命令。只需从主机的 cron 中编排 reload

    但是,如果您无法在您的环境中使用主机的 cron,则需要另一种解决方案...

    【讨论】:

    • 我宁愿找一个不依赖主机的解决方案。
    • 如果 certbot 也在 docker 容器中运行,那又如何呢?主机的 cron 可用于启动该 certbot 容器,但您如何知道它何时完成工作,以及您需要重新加载 nginx 容器?
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 2017-03-18
    • 1970-01-01
    • 2020-11-09
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多