|
| 1 | +services: |
| 2 | + certbot: |
| 3 | + build: . |
| 4 | + command: |
| 5 | + - certonly |
| 6 | + - --non-interactive |
| 7 | + - --agree-tos |
| 8 | + - --email |
| 9 | + - ${CERTBOT_EMAIL:[email protected]} |
| 10 | + - --authenticator=dns-multi |
| 11 | + - --dns-multi-credentials=/etc/letsencrypt/dns-multi.ini |
| 12 | + # 四个域名可以同时申请, 故不要求必填 |
| 13 | + - --domains=${SERVER_HOSTNAME} |
| 14 | + - --domains=${TRACK_HOSTNAME} |
| 15 | + - --domains=${BUS_HOSTNAME} |
| 16 | + - --domains=${VIDEO_HOSTNAME} |
| 17 | + - --deploy-hook |
| 18 | + - "sh -c 'COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME} DATA=${DATA_DIR:-/data} /home/docker/certbot/deploy-hook.sh'" |
| 19 | + volumes: |
| 20 | + - /var/run/docker.sock:/var/run/docker.sock |
| 21 | + - ${DATA_DIR:-/data}/certbot:/etc/letsencrypt |
| 22 | + configs: |
| 23 | + - source: certbot-deploy-hook.sh |
| 24 | + target: /home/docker/certbot/deploy-hook.sh |
| 25 | + - source: certbot-dns-multi.ini |
| 26 | + target: /etc/letsencrypt/dns-multi.ini |
| 27 | + mode: 0600 |
| 28 | + |
| 29 | + |
| 30 | + ofelia: |
| 31 | + image: mcuadros/ofelia |
| 32 | + command: daemon --docker |
| 33 | + volumes: |
| 34 | + - /var/run/docker.sock:/var/run/docker.sock:ro |
| 35 | + labels: |
| 36 | + # 通过ofelia重启其他服务, 需要这样绕一道 |
| 37 | + # https://github.com/mcuadros/ofelia/issues/280#issuecomment-2561863012 |
| 38 | + ofelia.job-run.certbot-renew.schedule: "@daily" |
| 39 | + ofelia.job-run.certbot-renew.command: "sh -c 'docker compose -p ${COMPOSE_PROJECT_NAME} restart certbot'" |
| 40 | + ofelia.job-run.certbot-renew.image: "docker:cli" |
| 41 | + ofelia.job-run.certbot-renew.volume: "/var/run/docker.sock:/var/run/docker.sock" |
| 42 | + |
| 43 | +configs: |
| 44 | + certbot-deploy-hook.sh: |
| 45 | + file: ./deploy-hook.sh |
| 46 | + # certbot-dns-multi的配置文件 |
| 47 | + # https://github.com/alexzorin/certbot-dns-multi#usage |
| 48 | + certbot-dns-multi.ini: |
| 49 | + content: | |
| 50 | + dns_multi_provider = ${CERTBOT_DNS_PROVIDER:-dnspod} |
| 51 | + DNSPOD_API_KEY = "${CERTBOT_DNS_API_KEY:?required}" |
| 52 | + CLOUDFLARE_DNS_API_TOKEN = "${CERTBOT_DNS_API_KEY:?required}" |
| 53 | + TENCENTCLOUD_SECRET_KEY = "${CERTBOT_DNS_API_KEY:?required}" |
| 54 | + TENCENTCLOUD_SECRET_ID = "${CERTBOT_TENCENTCLOUD_SECRET_ID}" |
0 commit comments