我有一个运行 SSL 的网站,使用 lets encrypt 完成。我已经按照这个 guide 编写/使用了一个脚本,但是证书不会自动更新。每 90 天我需要手动运行 lets encrypt renewal 命令来为我的网站获取新证书。
这就是我的 docker-compose 对于 nginx 和 certbot 的样子
nginx:
build: nginx-image
image: km-nginx
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
ports:
- 80:80
- 443:443
depends_on:
- keycloak
- km-app
links:
- keycloak
- km-app
environment:
- PRODUCTION=true
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
certbot:
image: certbot/certbot
restart: unless-stopped
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;'"
您应该将 cerbot 详细选项 添加到您的
cerbot renew
命令中,以检查发生了什么。
指南提到:
编辑脚本以添加您的域和电子邮件地址。
如果您更改了共享 Docker 卷的目录,请确保您也调整了变量。data_path
init-letsencrypt.sh
并确保:
data_path="./data/certbot"
路径存在于您的主机上,因为这是容器安装的路径。