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