Traefik – это обратный прокси с поддержкой Docker, который предоставляет встроенную панель мониторинга.
Проект Traefik предоставляет официальный образ Docker, который поможет быстро запустить Traefik в контейнере Docker.
Панель инструментов представляет собой отдельное веб-приложение, которое будет работать в контейнере Traefik по порту 8080.
Если нет необходимости в запароленном доступе к панели управления, то простейшая форма для запуска будет выглядеть следующим образом:
# docker -v
Docker version 19.03.1, build 74b1e89
# docker-compose -v
docker-compose version 1.22.0, build f46880fe
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.170 test.ru nginx.test.ru nginx2.test.ru
cat docker-compose.yml
version: '2.4'
services:
traefik:
image: traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --web
--defaultentrypoints=http
--entrypoints="Name:http Address::80"
--docker
--docker.endpoint="unix:///var/run/docker.sock"
--docker.watch=true
--docker.exposedbydefault=false
ports:
- 80:80
- 8080:8080
nginx:
image: nginx:alpine
container_name: webserver
restart: unless-stopped
labels:
- traefik.frontend.rule=Host:nginx.test.ru
- traefik.docker.network=traefik
- traefik.port=80
- traefik.enable=true
nginx2:
image: nginx:alpine
volumes:
- /var/www/nginx:/usr/share/nginx/html
container_name: webserver2
restart: unless-stopped
labels:
- traefik.frontend.rule=Host:nginx2.test.ru
- traefik.docker.network=traefik
- traefik.port=80
- traefik.enable=true<br /><br /></code><span style="font-family: georgia, palatino, serif;">В данном конфиге мы запускаем 3 сервиса, 1 - traefik, 2,3 - контейнеры nginx.</span>
У traefik только 1 точка входа, это 80 порт. На порту 8080 будет доступна панель в которой визуально отображается какие сервисы доступны.
Для поднимаемых нами сервисов указаны следующие доменные имена: nginx.test.ru
и nginx2.test.ru,
они используют созданную ранее docker сеть traefik
и как мы видим, отвечают по одному 80 порту. Для того чтобы работал сервис работал ему прописывается пункт label где задаются параметры для traefik.
Ниже показан ответ curl по нашим сервисам:
curl nginx.test.ru