видимость между контейнерами, построенными с различной конфигурацией docker -compose - PullRequest
1 голос
/ 06 августа 2020

Мне нужно использовать службу api_ mysql в sass_ php. Контейнеры построены из разных файлов docker -compose.yml, и я понимаю, что они принадлежат другой сети, и они не видят их. Ниже представлена ​​моя текущая конфигурация, но когда я хочу использовать службу, я получаю: «php_network_getaddresses: getaddrinfo failed: Name не разрешается»:

$ docker network ls
NETWORK ID          NAME                 DRIVER              SCOPE
bcad56c87a8c        repo1_api           bridge              local
196f42d7cbea        repo2_api           bridge              local
79b41a714b48        repo2_sass          bridge              local

docker -compose-1.yml

networks:
  api:

services:

  api_mysql:
    ...
    networks:
      api:

  api_php:
    ...
    depends_on:
      - api_mysql
    networks:
      api:

docker -compose-2.yml

version: '3'

networks:
  api:
  sass:

services:

  sass_mysql:
    ...
    networks:
      sass:

  sass_php:
    ...
    depends_on:
      - sass_mysql
    networks:
      api:
      sass:

1 Ответ

2 голосов
/ 06 августа 2020

Поскольку они живут в разных сетях, их доменные имена тоже. DNS, используемый sass_php, не имеет доступа к доменным именам, доступным в сети repo1_api. Он может получить доступ к сети repo2_api, но эта сеть не используется api_mysql.

Итак, чтобы исправить это, вы можете объявить свою сеть вне файлов docker-compose и добавить ее таким образом:

networks:
  default:
    external:
      name: my-pre-existing-network

Ссылка: https://docs.docker.com/compose/networking/#use -a-pre-existing-network

Или вы можете EXPOSE порты api_mysql на свой локальный хост и получить доступ через него .

Я бы предпочел первый способ.

...