Назад | Перейти на главную страницу

Как автоматически обновлять сертификаты LetsEncrypt с помощью Dockerized экземпляра Apache?

У нас есть несколько dockerized приложений PHP с пользовательскими образами докеров, так что функция PHP mail () действительно работает.

Когда мы создаем образы, мы копируем сертификаты в образ во время сборки. Это отлично работает ... в течение 90 дней.

Чтобы обновить, нам нужно закрыть веб-приложение, обновить LetsEncrypt вручную, затем заново собрать и повторно развернуть новый образ с новыми сертификатами.

Я чувствую, что смогу сделать это с именованными контейнерами, чтобы обновление было автоматическим, но я не могу осмыслить это.

У кого-нибудь есть рабочий playbook для этого?

В итоге ответ был таков: используйте именованные тома и добавьте сценарий для копирования сертификатов в тома на локальном диске с хоста докера. Это работает так:

  1. Создайте именованный том, смонтированный в /certs.
  2. Убедитесь, что Apache использует сертификаты, которые находятся в файлах конфигурации вашего сайта.
  3. Настройте cert-bot для автоматического продления от хозяина, и используйте предварительные хуки для завершения работы вашего экземпляра докера.
  4. После того, как cert-bot обновит сертификат, используйте post-hooks для запуска сценария для копирования вновь созданных / обновленных сертификатов из /etc/letsencrypt/live/foosite.com/ (или аналогичного) в расположение тома - перезаписывая то, что там есть.

Этот последний шаг требует немного усилий. После создания именованного тома в первый раз вы должны использовать docker volume ls и docker volume inspect чтобы узнать, где находится этот том в файловой системе хоста. Обычно он находится где-то в / var / lib / docker.

Ваш сценарий post-hook из шага 4 выше просто копирует сертификаты из live-каталога напрямую в этот том докера, а ЗАТЕМ перезапускает контейнеры.