Как сделать так, чтобы контейнер копировал файл из другого контейнера и запускал команду для файла каждые X дней? - PullRequest
0 голосов
/ 14 июля 2020

У меня Traefik в качестве веб-сервера. Он генерирует acme.json, который содержит ключи SSL моего веб-сайта. Traefik очень хорошо разбирается в ключах SSL и автоматически запрашивает их по истечении срока их действия.

Я настраиваю почтовый сервер, который должен будет использовать ключи SSL для отправки электронных писем. Эти ключи нужно будет получить, когда они будут обновлены с помощью traefik. Сценарию с именем dumpcerts.sh можно указать путь к acme.json для извлечения ключей SSL. Я также могу заменить это сценарием python, чтобы все было согласовано с моим проектом.

Затем мне нужно будет обновить свои записи DNS, но это выходит за рамки этого вопроса.

Фрагмент моего docker-compose файла:

  traefik:
    image: traefik:1.7-alpine
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./config/traefik/traefik.toml:/etc/traefik/traefik.toml:ro
      - ./config/traefik/acme/:/etc/traefik/acme/

  mailserver:
    build:
      context: ./config/mailserver
      dockerfile: Dockerfile-email
    volumes:
      - ./config/mailserver/acme/:/etc/traefik/acme/

Я понятия не имею, как делать этот процесс копирования обновленного файла через контейнер каждые X дней, а затем запускать программу. Я думаю, что добавление acme.json в качестве тома на почтовый сервер является правильным (это автоматически копирует acme, если он изменяется? Или это просто при запуске контейнера?). Затем я мог бы добавить сценарий cronjob на почтовый сервер для запуска сценария извлечения сертификатов, и он должен работать. Есть ли лучший способ сделать это через Docker или это звучит правильно?

Мой файл докеров для почтового сервера:

FROM debian:stable
MAINTAINER David F. <david-frick@protonmail.com>

ARG DEBIAN_FRONTEND=noninteractive
CMD ["entrypoint.sh"]

где точка входа строит почтовый сервер.

...