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