Почему я должен указывать сети дважды в docker-compose.yml? - PullRequest
0 голосов
/ 01 мая 2019

Я немного растерялся. В файле docker-compose.yml:

version: "3"
networks:
  proxy:
    external: true
services:
  eliko:
    image: irmscher/eliko:v1
    labels:
      - traefik.backend=eliko
      - traefik.frontend.rule=Host:eliko.bloggercraft.com
      - traefik.docker.network=proxy
    networks:
      - proxy

Почему я должен указывать сеть дважды? Первый раз в networks: proxy и во второй раз в рамках услуг networks: -proxy?

Я фактически создал сеть прокси с docker network create proxy заранее. Я думал networks: в сетях CREATE, входящих в состав docker-compose, поэтому я решил удалить его и оставить имя сети только в заголовке моих служб (eliko). Но тогда я получил ошибку: ERROR: Service "eliko" uses an undefined network "proxy"

Так что мой вопрос ... что именно это делает:

networks:
  proxy:
    external: true

Так как, насколько я понимаю, это:

    networks:
      - proxy

подключается к сети, поэтому предыдущий должен создать сеть? Что если я создаю сеть с docker network create, она идентична или

Здесь немного запутано ...

1 Ответ

1 голос
/ 01 мая 2019

Раздел верхнего уровня networks сообщает docker-compose "это сети, которые существуют".Без этого docker-compose не знал бы, что делать, когда вы пытаетесь подключить свой контейнер eliko к сети proxy.Вы получите это:

ERROR: Service "eliko" uses an undefined network "proxy"

Помните, что в стандартном случае сети в docker-compose имеют префикс с именем проекта.Если у вас есть внешняя сеть, например:

version: "3"
networks:
  proxy:
services:
  eliko:
    image: irmscher/eliko:v1
    labels:
      - traefik.backend=eliko
      - traefik.frontend.rule=Host:eliko.bloggercraft.com
      - traefik.docker.network=proxy
    networks:
      - proxy

, тогда compose создаст сеть с именем project_proxy (где project по умолчанию - это имя каталога, в котором содержится docker-compose.yml).Только потому, что вы объявили, что сеть external, составленный знает, что вы хотите использовать существующую сеть.

...