Сети Docker и Traefik

#docker #networking #traefik

#docker #сеть #traefik

Вопрос:

Вот мой контекст: у меня есть проект блога caddy php mysql с его файлом docker-compose, и мне нужно поставить обратный прокси-сервер traefik впереди. Для локального тестирования я планирую разместить это на blog.localhost, чтобы посмотреть, что произойдет.

Когда я складываю все в один и тот же файл docker-compose.yml, это работает как шарм; Но когда я разделяю это на 2 разных файла docker-compose.yml с трафиком в его собственном, я получаю некоторый «Тайм-аут шлюза».

Я предполагаю, что существует проблема сетей, заключающаяся в том, что у каждого контейнера в одной композиции неявно есть сеть между ними, но между 2 файлами мне нужно объявить один (первый вопрос: я прав?)

Но я попытался объявить сеть, и ничего не произошло.

Фактически, моя проблема может быть сведена к этому самому случаю, типичному базовому примеру из официальной документации traefik:

 version: "3.3"

services:
  traefik:
    image: "traefik:v2.3"
    container_name: "traefik"
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  whoami:
    image: "traefik/whoami"
    container_name: "simple-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)"
      - "traefik.http.routers.whoami.entrypoints=web"
 

Вопрос в том, как вы заставляете это работать в 2 отдельных файлах docker-compose / командах запуска docker?

Заранее большое вам спасибо!

Ответ №1:

Хорошо, я понял:

  1. создайте внешнюю сеть (вне композиций) с помощью команды «docker network create proxy».
  2. Свяжите ваш обратный прокси-сервер traefik И ваши композиции (в данном случае, в конце созданного вами файла whoami docker-compose.yml) с этой сетью следующим образом:
 networks:   
  default:
    external:
      name: proxy
 
  1. Запустите свои 2 композиции
  2. Прибыль

Меня беспокоит только то, что я не нашел способа создать эту сеть непосредственно в файле docker-compose.yml traefik. Может быть, мы не можем создать внешнюю сеть В составе?

Комментарии:

1. Мы можем: » сети: моя сеть: внешняя: истина »

Ответ №2:

Способ создания этой сети напрямую:

https://docs.docker.com/compose/networking/

Сетям также можно присвоить пользовательское имя (начиная с версии 3.5):

 version: "3.9"
services:
  # ...
networks:
  frontend:
    name: custom_frontend
    driver: custom-driver-1