2. Практика — запуск сервисов Traefik

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



Спойлер