使用不同docker compose配置构建的容器之间的可见性

使用不同docker compose配置构建的容器之间的可见性,docker,docker-compose,Docker,Docker Compose,我需要在sass\u php中使用服务api\u mysql。容器是用不同的docker-compose.yml文件构建的,我知道它们属于不同的网络,它们无法看到它们之间的区别。以下是我当前的配置,但当我想使用我得到的服务时: “php_网络_getaddresses:getaddrinfo失败:名称未解析”: docker-compose-1.yml networks: api: services: api_mysql: ... networks: ap

我需要在sass\u php中使用服务api\u mysql。容器是用不同的docker-compose.yml文件构建的,我知道它们属于不同的网络,它们无法看到它们之间的区别。以下是我当前的配置,但当我想使用我得到的服务时: “php_网络_getaddresses:getaddrinfo失败:名称未解析”:

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:

因为他们生活在不同的网络中,所以他们的域名也是如此。
sass\u php
使用的DNS无法访问
repo1\u api
网络中可用的域名。它可以访问
repo2\u api
网络中的那些,但是
api\u mysql
不使用这个网络

因此,为了补救,您可以在
docker compose
文件之外声明您的网络,并以这种方式添加它:

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

或者您可以
向本地主机公开
api\u mysql
端口,并通过它进行访问

我更喜欢第一种方法

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