Имя роутера в Docker
Имя роутера отличает одно правило от другого в метках одного и того же прокси.
Сегмент shop
в traefik.http.routers.shop
стоит между routers
и rule.
Одинаковое имя у двух правил склеило бы их в одну запись и смешало бы хосты.
Сервис shop
на nginx
и сервис api
на traefik/whoami
без ports.
Хосты shop.localhost
и api.localhost
задают в разных роутерах.
Файл проекта:
services:
proxy:
image: traefik:3
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
shop:
image: nginx
labels:
- traefik.enable=true
- traefik.http.routers.shop.rule=Host(`shop.localhost`)
api:
image: traefik/whoami
labels:
- traefik.enable=true
- traefik.http.routers.api.rule=Host(`api.localhost`)
Подъём в фоне:
docker compose up -d
http://shop.localhost
показывает nginx,
http://api.localhost
- текст whoami.
Имена роутеров в метках
не совпадают, поэтому правила не сливаются.
Опишите прокси на 80, сервис goods на nginx с хостом goods.localhost и сервис status на traefik/whoami с хостом status.localhost в разных роутерах.
Откройте оба адреса и запишите, чем отличается содержимое страниц goods.localhost и status.localhost.