11services :
22 certbot :
3- # image: ghcr.io/alexzorin/certbot-dns-multi:4.27.0
4- # command:
5- # - certonly
6- # - --non-interactive
7- # - --agree-tos
8- # - --authenticator=dns-multi
9- # - --dns-multi-credentials=/etc/letsencrypt/dns-multi.ini
10- # - --domains=${TRACK_HOSTNAME:?required}
11- # - --domains=${BUS_HOSTNAME:?required }
12- # - --dry-run
13- image : docker:cli
14- command : /home/docker/certbot/certbot-renew .sh
3+ build : .
4+ command :
5+ - certonly
6+ - --non-interactive
7+ - --agree-tos
8+ - --authenticator=dns-multi
9+ - --dns-multi-credentials=/etc/letsencrypt/dns-multi.ini
10+ # 两个域名可以同时申请, 故不要求两个都必填
11+ - --domains=${TRACK_HOSTNAME }
12+ - --domains=${BUS_HOSTNAME}
13+ - --deploy-hook
14+ - " sh -c 'COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} DATA=${DATA_DIR:-/data} /home/docker/certbot/deploy-hook .sh' "
1515 volumes :
1616 - /var/run/docker.sock:/var/run/docker.sock
1717 - ${DATA_DIR:-/data}/certbot:/etc/letsencrypt
1818 configs :
19- - source : certbot-renew .sh
20- target : /home/docker/certbot/certbot-renew .sh
19+ - source : certbot-deploy-hook .sh
20+ target : /home/docker/certbot/deploy-hook .sh
2121 - source : certbot-dns-multi.ini
2222 target : /etc/letsencrypt/dns-multi.ini
2323 mode : 0600
@@ -29,21 +29,22 @@ services:
2929 volumes :
3030 - /var/run/docker.sock:/var/run/docker.sock:ro
3131 labels :
32+ # 通过ofelia重启其他服务, 需要这样绕一道
3233 # https://github.com/mcuadros/ofelia/issues/280#issuecomment-2561863012
3334 ofelia.job-run.certbot-renew.schedule : " @daily"
3435 ofelia.job-run.certbot-renew.command : " sh -c 'docker compose -p ${COMPOSE_PROJECT_NAME} restart certbot'"
3536 ofelia.job-run.certbot-renew.image : " docker:cli"
3637 ofelia.job-run.certbot-renew.volume : " /var/run/docker.sock:/var/run/docker.sock"
3738
3839configs :
39- certbot-renew.sh :
40- file : ./certbot-renew.sh
40+ certbot-deploy-hook.sh :
41+ file : ./deploy-hook.sh
42+ # certbot-dns-multi的配置文件
43+ # https://github.com/alexzorin/certbot-dns-multi#usage
4144 certbot-dns-multi.ini :
4245 content : |
43- dns_multi_provider=cloudflare
44- CLOUDFLARE_DNS_API_TOKEN=
45- certbot-dns-multi-tencentcloud.ini :
46- content : |
47- dns_multi_provider=tencentcloud
48- TENCENTCLOUD_SECRET_ID=
49- TENCENTCLOUD_SECRET_KEY=
46+ dns_multi_provider=${CERTBOT_DNS_PROVIDER:-dnspod}
47+ DNSPOD_API_KEY=${CERTBOT_DNS_API_KEY:?required}
48+ CLOUDFLARE_DNS_API_TOKEN=${CERTBOT_DNS_API_KEY:?required}
49+ TENCENTCLOUD_SECRET_KEY=${CERTBOT_DNS_API_KEY:?required}
50+ TENCENTCLOUD_SECRET_ID=${CERTBOT_TENCENTCLOUD_SECRET_ID}
0 commit comments