Skip to content

Latest commit

 

History

History
100 lines (67 loc) · 4.1 KB

README.md

File metadata and controls

100 lines (67 loc) · 4.1 KB

traefik_local

Скрипты и описание запуска локального прокси для разработки.

Всё проверялось на только на linux, на windows возможно потребуются какие-то доработки.

Для работы нам потребуется выполнить следующие действия

  • Настроить dns
  • Сгенерировать сертификаты
  • Добавить свой корневой сертификат в браузер
  • Настроить новую сеть docker
  • Запустить контейнер с traefik
  • Запустить наш проект

Настройка DNS

Для упрощения работы и уменьшения ручной работы лучше использовать dnsmasq (устанавливайте по инструкции вашего дистрибутива)

И для дальнейшей работы в его конфигурацию надо добавить следующие строки

address=/.dev.docker/172.20.0.2
no-negcache

где

  • dev.docker - это ваша локальная dns-зона, и теперь сайты типа blabla.dev.docker будут отправляться на ip 172.20.0.2,
  • 172.20.0.2 - это ip сети докера, в которой мы запускаем наш traefik

Если вы не желаете устанавливать и настраивать dnsmasq, то можно добавлять ваши сайты в /etc/hosts, часто этого будет достаточно.

Генерация сертификатов

Для генерации используется скрипт ./bin/create_certificate_for_domain.sh.

Запуск очень простой, выполните в корне этого репозитория следующую команду.

./bin/create_certificate_for_domain.sh dev.docker

Добавить ваш CA сертификат на linux в chrome можно через меню Настройки -> Настроить сертификаты -> Центры сертификации. Разрешити использовать данный сертификат "Доверять этуму сертификату для подтверждения сайтов".

Настроика сети docker

Создадим сеть proxy

docker network create --subnet=172.20.0.0/24 --attachable proxy

где 172.20.0.0/24 - это сеть на локальном компе где будет крутится наш traefik, и фронт-контейнеры наших проектов

Запуск traefik

Для простого запуска нам потребуется docker-compose.

Если вы ничего не меняли в командах выше, то запуск сводится к следующему действию

docker-compose up -d

Запуск нашего проекта

Для запуска наших контейнеров, нам надо будет исправить docker-compose.yml нашего проекта.

Например

version: "3"

services:
  web:
    image: nginx:1.15.12-alpine
    labels:
      - traefik.enable=true
      - traefik.backend=events
      - traefik.frontend.rule=Host:events.dev.docker
      - traefik.docker.network=proxy
    volumes:
      - ./src:/app
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    networks:
      - proxy

networks:
  proxy:
    external: true

Самые интересные места тут

  • описание блока networks внизу блока, где мы описываем нашу внешнюю сеть
  • блок networks в описании сервиса, говорящий что мы используем также сеть proxy для этого контейнера
  • блок labels, где описываются настройки traefik для контейнера

Всё остальное обычно.