Как соединить мост по умолчанию и определенный пользователем мост с Docker-Comose v3? - PullRequest
1 голос
/ 17 апреля 2019

У меня есть docker-compose yml с несколькими службами, которые находятся в определенной пользователем сети (в режиме моста). Я хочу подключить один из них к моей службе по умолчанию, чтобы открыть порт для внешнего мира.

Подводя итог, можно привести конкретный пример того, что я хочу сделать:

services:
  service1:
    networks:
      - my_network

  service2:
    networks:
      - my_network
      - bridge
    ports:
      8080:8080

Как описано здесь Я попробовал следующее, но это привело к этой ошибке: ERROR: for app network-scoped alias is supported only for containers in user defined networks.

networks:
  my_network:
    driver: bridge
  bridge:
    external: true

Я также попробовал решение, предложенное в Как подключиться к мостовой сети по умолчанию с docker-compose v2? , но вы не можете смешать комбинацию клавиш network_mode: bridge и ключевое слово networks в докере сочинить.

Я также попытался удалить ссылку на мостовую сеть по умолчанию в docker-compose.yml и добавить мой контейнер service2 к мосту по умолчанию после запуска служб, например:

docker-compose up
docker network connect bridge service2

Этот подход работает, и я могу получить доступ к своему открытому порту на service2 из внешнего мира, в итоге я получаю:

docker inspect service2


"Networks": {
    "bridge": {
        ...
     },
     "my_network": {  
          ...
      }
}

Но я не хочу выполнять docker network connect bridge service2 каждый раз, когда хочу запустить свои службы.

Я знаю, что мой вопрос очень похож на этот: Как использовать хост-сеть и любую другую пользовательскую сеть вместе в Docker-Compose? , за исключением того, что я не хочу используйте режим хоста.

Можно ли одновременно подключить службу в определенной пользователем сети и мосту по умолчанию?

1 Ответ

1 голос
/ 17 апреля 2019

Я думаю, вам не нужно быть в мостовой сети по умолчанию, чтобы публиковать порты из контейнера на вашу машину.

...