Skitflow

Домены

Настройка доменов для вашего приложения Docker Compose.

При использовании Docker Compose добавление домена к сервису — простой процесс. Это руководство проведет вас через необходимые шаги настройки ручных доменов для вашего приложения.

Ключевые шаги:

  1. Добавьте сервис в skitflow-network.
  2. Используйте метки Traefik для настройки маршрутизации.

Внимание

Начиная с версии v0.7.0, Skitflow поддерживает домены нативно. Это означает, что вы можете настроить домен непосредственно в интерфейсе Skitflow, без выполнения остальных шагов — смотрите раздел доменов.

Пример сценария

Рассмотрим приложение с тремя компонентами: фронтенд, бэкенд и база данных. Мы начнем с базового файла Docker Compose и затем дополним его конфигурацией домена.

version: "3.8"

services:
  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile
    volumes:
      - ./frontend:/app
    ports:
      - "3000:3000"
    depends_on:
      - backend

  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    volumes:
      - ./backend:/app
    ports:
      - "5000:5000"
    environment:
      - DATABASE_URL=postgres://postgres:password@database:5432/mydatabase
    depends_on:
      - database

  database:
    image: postgres:13
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydatabase
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Шаг 1: Добавление сети

Сначала добавим skitflow-network к нашим сервисам:

version: "3.8"

services:
  frontend:
    # ... (предыдущая конфигурация)
    networks:
      - skitflow-network

  backend:
    # ... (предыдущая конфигурация)
    networks:
      - skitflow-network

  database:
    # ... (предыдущая конфигурация)
    networks:
      - skitflow-network

volumes:
  db-data:

networks:
  skitflow-network:
    external: true

Шаг 2: Настройка меток Traefik

Теперь добавим метки Traefik для маршрутизации доменов к нашим сервисам. Мы сосредоточимся на сервисах frontend и backend:

version: "3.8"

services:
  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile
    volumes:
      - ./frontend:/app
    expose:
      - 3000
    depends_on:
      - backend
    networks:
      - skitflow-network
    labels:
      - traefik.enable=true
      - traefik.http.routers.frontend-app.rule=Host(`frontend.skitflow.cloud`)
      - traefik.http.routers.frontend-app.entrypoints=web
      - traefik.http.services.frontend-app.loadbalancer.server.port=3000

  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    volumes:
      - ./backend:/app
    expose:
      - 5000
    environment:
      - DATABASE_URL=postgres://postgres:password@database:5432/mydatabase
    depends_on:
      - database
    networks:
      - skitflow-network
    labels:
      - traefik.enable=true
      - traefik.http.routers.backend-app.rule=Host(`backend.skitflow.cloud`)
      - traefik.http.routers.backend-app.entrypoints=web
      - traefik.http.services.backend-app.loadbalancer.server.port=5000

  database:
    # ... (без изменений)

volumes:
  db-data:

networks:
  skitflow-network:
    external: true

Понимание меток Traefik

  1. traefik.enable=true — Включает маршрутизацию Traefik для сервиса.
  2. traefik.http.routers.<UNIQUE-RULE>.rule=Host('your-domain.skitflow.cloud') — Указывает домен для сервиса.
  3. traefik.http.routers.<UNIQUE-RULE>.entrypoints=web — Делает сервис доступным через HTTP.
  4. traefik.http.services.<UNIQUE-RULE>.loadbalancer.server.port=3000 — Указывает порт, который ваш сервис использует внутри.

Примечание: Замените <UNIQUE-RULE> уникальным идентификатором для каждого сервиса (например, frontend-app, backend-app и т.д.).

Важные замечания

  1. Открытие портов: Используйте expose вместо ports, чтобы ограничить доступ к портам сетью контейнера и избежать открытия на хост-машине.
  2. Конфигурация DNS: Убедитесь, что вы создали A-записи, указывающие на ваш домен, в настройках DNS-провайдера.
  3. HTTPS: Для HTTPS вы можете использовать Let's Encrypt или другие SSL/TLS-сертификаты.

Развертывание

С этими конфигурациями вы готовы к развертыванию приложения с использованием Docker Compose. Эта настройка должна быть достаточной для запуска ваших сервисов с пользовательской маршрутизацией доменов через Traefik.

On this page