Установка Traefik с использованием Docker

Traefik — современный прокси-сервер и балансировщик нагрузки, с помощью которого можно легко управлять маршрутизацией трафика в приложениях, работающих внутри Docker контейнеров.

Конфигурация успешно используется в нашем приложении Messenger

YAML
services:
  traefik:
    container_name: traefik
    image: traefik:v3.1.2
    restart: unless-stopped
    env_file:
      - /data/secrets/${SERVER_DOMAIN}/${SERVER_DOMAIN}.env
    command: 
     - "--providers.file.filename=/traefik/certs.yml"
     - "--providers.docker.network=proxynet"
     - "--api.insecure=false"
     - "--api.dashboard=true" 
     - "--providers.docker"
     - "--log=true"
     - "--log.level=${TRAEFIK_LOG_LEVEL}"
     - "--providers.docker.exposedByDefault=false"
    #Entrypoints:
     - "--entrypoints.http.address=:80"
     - "--entrypoints.https.address=:443"
     - "--entrypoints.postgres.address=:5432"
     - "--entrypoints.mariadb.address=:3306"
     - "--entrypoints.http.http.redirections.entrypoint.to=https"
     - "--entrypoints.http.http.redirections.entrypoint.scheme=https"
    #SSL Let's Encrypt:
     - "--entrypoints.https.http.tls.certResolver=le"
     - "--certificatesresolvers.le.acme.tlschallenge=true"
     - "--certificatesresolvers.le.acme.email=${ADMIN_EMAIL}"
     - "--certificatesresolvers.le.acme.storage=/letsencrypt/${SERVER_DOMAIN}.acme.json"
     #Dashboard secure:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.rule=Host(`traefik.${SERVER_DOMAIN}`)"
      - "traefik.http.routers.dashboard.entrypoints=https"
      - "traefik.http.routers.dashboard.tls=true"
      - "traefik.http.routers.dashboard.tls.certresolver=le"
      - "traefik.http.routers.dashboard.service=api@internal"
      - "traefik.http.routers.dashboard.middlewares=auth"
      - "traefik.http.middlewares.auth.basicauth.usersfile=/httpauth/usersfile.htpasswd"
    ports:
      - "80:80"
      - "443:443"
      - "5432:5432"
      - "3306:3306"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /data/secrets/${SERVER_DOMAIN}/letsencrypt:/letsencrypt
      - /data/secrets/${SERVER_DOMAIN}/httpauth:/httpauth
      - /data/traefik/certs.yml:/traefik/certs.yml
      - /data/secrets/${SERVER_DOMAIN}/selfsigned:/selfsigned
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
networks:
  default:
    name: proxynet
    external: true

Основные моменты

  1. Образ и контейнер:
  • Мы используем образ traefik:v3.1.2 и настраиваем его так, чтобы он автоматически запускался вместе с системой (restart: unless-stopped).
  • Переменные окружения загружаются из файла .env.
  1. Командная строка:
  • Traefik конфигурируется через параметры командной строки. Важные параметры включают указание файлов для хранения конфигурации сертификатов и определение сетевой среды Docker, в которой будет работать Traefik.
  1. Точки входа:
  • Точки входа определяют порты, на которые будет поступать входящий трафик (http, https, postgres и mariadb). Также обеспечивается редирект HTTP на HTTPS для повышения безопасности.
  1. SSL и Let’s Encrypt:
  • Включена поддержка автоматической выдачи SSL-сертификатов Let’s Encrypt через certResolver. Это позволяет обеспечивать безопасное соединение с использованием TLS.
  1. Панель управления (Dashboard):
  • Traefik предоставляет веб-интерфейс для мониторинга и управления (dashboard). Он защищён с помощью HTTP-базовой аутентификации, данные для которой хранятся в файле usersfile.htpasswd.
  1. Монтирование томов:
  • Конфигурация involves монтирование различных ресурсов и секретов в контейнер Traefik. Это включает сокет Docker для интеграции с контейнерами, данные для сертификатов и аутентификации.
  1. Сетевые настройки:
  • Используемая сеть называется proxynet и она должна быть внешней для обеспечения корректной работы Traefik с другими контейнерами.
  1. Логирование:
  • Происходит настройка логирования через json-file с ограничением размера файла в 1 MB, что помогает управлять объемом логов и упрощает диагностику.

Репозиторий этой конфигурации можно найти здесь.


Если вам интересен наш проект, есть вопросы, замечания, или предложения — оставляйте комментарии или пишите на почту: checkerwars@mail.ru

Кроме того, автор проекта ищет работу. Мое резюме.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *