docker - 有没有办法使docker容器识别更新的证书并重新启动其过程?

标签 docker lets-encrypt certbot

我仍在学习使用Docker的过程,但是我认为我已经设法构建了一个运行certbot并获得我各个网站的ssl证书的不错的镜像。如果该图像没有看到任何证书,它将发出初始certbot请求,然后使用运行更新命令的单个作业启动crond。

证书本身被卡到映射到/ etc / letsencrypt的命名卷中。

我曾打算将此卷附加到需要访问证书的其他容器上。但是,在我看来,当续订完成时,新的证书文件将显示给那些容器可用,但是应用程序本身不会重新启动或注意到它们。

是否有合理的方法来做到这一点?最初,我认为这可能是一种管理证书的方法,而不必到处都使用ssh / scp脚本,但是我想不出一种使Web应用程序认识到证书已被续订的方法。 。有没有可以使这项工作奏效的技巧或策略,还是这个想法只是死胡同?

最佳答案

一个Docker容器可以控制其他Docker容器...它可以像在命令行上一样启动/重新启动/停止容器以及其他命令。

必须将/var/run/docker.sock挂载到容器中,以使其成为可能,并且对此存在安全性方面的考虑。

然后,可以修改用于更新证书的(cron)作业,以重新启动任何使用共享证书卷的容器,例如:

--renew-hook "/usr/bin/curl --unix-socket /var/run/docker.sock -X POST http:/v1.24/containers/gitea/restart"

请记住,Docker本身还有其他建议,说明如何使用docker secret功能执行证书(仅在群体模式下可用)。

关于docker - 有没有办法使docker容器识别更新的证书并重新启动其过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744557/

相关文章:

docker build certbot 电子邮件输入

ssl - 如何让 Certbot 禁用某个密码

django - Django打印运行服务器日志到文件

database - docker 在没有主机卷的情况下运行本地脚本

ssl - 通过 DNS 为 Route53 颁发证书时,Certbot 无法找到 AWS 凭证

python - 使用 Nginx 在 Debian9 上安装 Let's encrypt/Certbot

database - 为什么将数据容器与数据库容器分开比从磁盘装载数据卷更好

docker selenium/standalone-chrome 无法连接到 docker web 服务器

ssl - 我可以使用 LetsEncrypt 为不属于我的子域颁发证书吗?

ssl - 为多个域使用 Google Cloud Load Balancer 和 SSL