Два сайта в Docker
Два сайта делят один порт прокси
и различаются именем хоста.
Запрос на shop.localhost
и запрос на api.localhost
приходят на один
80,
а Traefik выбирает
контейнер по правилу
роутера.
Сервис shop
на nginx
и сервис api
на traefik/whoami
без ports.
У каждого свой роутер
shop
и api
с разными хостами.
Один прокси слушает
80:
services:
proxy:
image: traefik:3
command:
- --entrypoints.web.address=:80
- --providers.docker=true
- --providers.docker.exposedbydefault=false
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
с именем контейнера.
Ни shop,
ни api
порт на компьютер
не публикуют.
Опишите прокси на 80, сервис store на nginx с хостом store.localhost и сервис info на traefik/whoami с хостом info.localhost.
Откройте оба адреса и запишите, чем отличается содержимое страниц store.localhost и info.localhost.