@MishaXXL

Как обновлять сертификаты в Docker Compose для Nginx с автоматическим перезапуском контейнера?

В Docker Compose есть контейнер Nginx
nginx:
  container_name: nginx_container
  image: nginx
  ports:
    - 80:80
    - 443:443
  networks:
    - private
    - public
  restart: always
  volumes:
    - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
    - ./nginx/conf.d/:/etc/nginx/conf.d/:ro

    - ./certbot/www:/var/www/certbot/:ro
    - ./certbot/conf/:/etc/nginx/ssl/:ro

certbot:
  image: certbot/certbot
  volumes:
    - ./certbot/www/:/var/www/certbot/:rw
    - ./certbot/conf/:/etc/letsencrypt/:rw


Устанавливаю и обновляю сертификаты путем команды
docker compose run --rm  certbot certonly --webroot --webroot-path /var/www/certbot/ -d my-site.ru

Но есть проблема, сертификат обновляется, но без перезагрузки контейнера nginx, он отдает старый

Как сделать обновление сертификата и перезапуск контейнера после этого на автомате?
  • Вопрос задан
  • 234 просмотра
Решения вопроса 3
@d-stream
Готовые решения - не подаю, но...
попросить nginx перечитать конфиги
например nginx -t && nginx -s reload
Ответ написан
Комментировать
karabanov
@karabanov Куратор тега Docker
Системный администратор
Можно попробовать Angie - он собирается с модулем http_acme - сервер сам себе выпустит сертификат и будет следить за его актуальностью.
Ответ написан
Комментировать
@dronmaxman
VoIP Administrator
nginx:
  container_name: nginx_container
  image: nginx
  ports:
    - 80:80
    - 443:443
  networks:
    - private
    - public
  restart: always
  volumes:
    - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
    - ./nginx/conf.d/:/etc/nginx/conf.d/:ro
    - ./certbot/www:/var/www/certbot/:ro
    - ./certbot/conf/:/etc/nginx/ssl/:ro
  command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"

certbot:
  image: certbot/certbot
  volumes:
    - ./certbot/www/:/var/www/certbot/:rw
    - ./certbot/conf/:/etc/letsencrypt/:rw
  entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы