Я хочу использовать несколько проектов для создания докеров с Traefik в качестве обратного прокси. Следуя документации, я создал два файла для создания докеров; один для Traefik и один для примера проекта, в котором есть 2 контейнера whoami.
Это отлично работает для бэкэндов, но кажется, что Traefik создает один интерфейс для каждого работающего контейнера. Поэтому вместо одного интерфейса для двух контейнеров whoami я определил два интерфейса: "frontend-Host-whoami-localhost-0" и "frontend-Host-whoami-localhost-1".
Traefik создаст больше интерфейсов, если я увеличу масштабы службы whoami (путем дублирования их определения в файле docker-compose.yaml или с помощью docker-compose scale whoami=10
).
Мне просто нужен один интерфейс для правила «Host: whoami.localhost», который указывает на один сервер с несколькими подключенными к нему запущенными контейнерами. Как я могу это сделать?
traefik.toml:
defaultEntryPoints = ["http"]
[web]
address = ":8080"
[entryPoints]
[entryPoints.http]
address = ":80"
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "localhost"
docker-compose.yaml (для traefik):
version: "2"
services:
traefik:
container_name: traefik
image: traefik
networks:
- webgateway
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
labels:
traefik.backend: web
traefik.frontend.rule: Host:monitor.localhost
networks:
webgateway:
driver: bridge
whoami / docker-compose.yaml:
version: "2"
services:
whoami:
image: emilevauge/whoami
networks:
- webgateway
labels:
traefik.backend: whoami
traefik.frontend.rule: Host:whoami.localhost
whoami_2:
image: emilevauge/whoami
networks:
- webgateway
labels:
traefik.backend: whoami
traefik.frontend.rule: Host:whoami.localhost
networks:
webgateway:
external:
name: traefikdocker_webgateway
whoami.localhost
нагрузка все еще сбалансирована, вы можете проверить это, используяcurl -H whoami.localhost http://localhost
- person Tarun Lalwani   schedule 14.06.2018