【发布时间】:2020-01-15 12:41:59
【问题描述】:
我有一个“主”容器,在启动所有其他容器时应该已经在运行。
在其中我有一个conf/ 目录,该服务正在监视和应用相关更改。
如何让每个新容器在此目录中放置一个文件?
真实场景:
鉴于下面的docker-compose.yml,我希望每个服务(portainer、whoami、apache)在"./traefik/conf/:/etc/traefik/conf/" 服务的"./traefik/conf/:/etc/traefik/conf/" 路径映射中删除一个.yml 文件。
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/. – 沙申克 V
问题是我无法拥有traefik/conf 中的所有文件。
这将需要在我每次创建新图像时手动将文件放在那里。
我相信每个服务都应该对自己的文件负责。
此外,当traefik 启动并找到其他尚未启动的服务的文件时,它会记录很多错误。
为避免这种行为,我想仅在容器启动时将文件放在那里。
下面是项目文件结构。
【问题讨论】:
-
文件
portainer.traefik.yml和whoami.traefik.yml位于何处?如果它们在主机上,您可以直接将它们复制到 ./traefik/conf/. -
@ShashankV 用文件结构更新了问题。问题是我不想将所有文件都放在 traefik/conf 中。每个服务都应该对其文件负责。此外,当 traefik 启动并找到尚未启动的其他服务的文件时,它会记录很多错误。
标签: docker docker-compose traefik