У меня есть «главный» контейнер, который должен уже запускаться при запуске всех остальных.
В нем у меня есть каталог conf/
, который эта служба отслеживает и применяет соответствующие изменения.
Как можно, чтобы каждый новый контейнер отбрасывал файл в этом каталоге?
реальный сценарий:
, учитывая мой docker-compose.yml
ниже, я хочу каждую услугу (portainer
, whoami
, apache
) для удаления файла .yml
в сопоставлении пути "./traefik/conf/:/etc/traefik/conf/"
службы traefik
.
docker -compose.yml
version: "3.5"
services:
traefik:
image: traefik
env_file: ./traefik/env
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik/conf/:/etc/traefik/conf/
- ./traefik/traefik.yml:/etc/traefik/traefik.yml
portainer:
image: portainer/portainer
depends_on: [traefik]
command: --no-auth -H unix:///var/run/docker.sock
volumes:
- /var/run/docker.sock:/var/run/docker.sock
whoami:
image: containous/whoami
depends_on: [traefik]
portainer.traefik.yml
http:
routers:
portainer:
entryPoints: [http]
middlewares: [redirect-to-http]
service: portainer-preauth@docker
rule: Host(`portainer.docker.mydomain`)
whoami.traefik.yml
http:
routers:
whoami:
entryPoints: [http]
middlewares: [redirect-to-http]
service: whoami-preauth@docker
rule: Host(`whoami.docker.mydomain`)
Где находятся файлы portainer.traefik.yml и whoami. traefik.yml находится? Если они находятся на хост-машине, вы можете напрямую скопировать их в ./traefik/conf/. - Shashank V
дело в том, что я не могу иметь все файлы в traefik/conf
.
, для этого потребуется вручную сбрасывать туда файлы каждый раз, когда я создаю новое изображение.
Я считаю, что каждая служба должна нести ответственность за свои собственные файлы.
также, когда traefik
запускается и находит файлы тех других служб, которые еще не запущены, регистрирует множество ошибок.
, чтобы избежать такого поведения, я бы нравится помещать файл туда только при запуске контейнера.
ниже приведена структура файла проекта.