version: '3.8'
services:
nginx:
image: nginx:1.25.0
deploy:
placement:
constraints:
- "node.labels.TAG==prod"
replicas: 1
ports:
- '80:80'
- '443:443'
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
networks:
- network
# Перезапустит nginx контейнер каждые 6 часов и подгрузит новые сертификаты, если есть
command: '/bin/sh -c ''while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"'''
certbot:
image: certbot/certbot:v1.28.0
deploy:
placement:
constraints:
- "node.labels.TAG==prod"
replicas: 1
container_name: certbot
# Проверяет каждые 12 часов, нужны ли новые сертификаты
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
networks:
- network
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
networks:
network:
name: network
external: true
node1:
volumes:
- ./ssl:/opt/ssl:ro
node2:
volumes:
- ./ssl:/opt/ssl:ro