簡體   English   中英

使用不同 docker-compose 配置構建的容器之間的可見性

[英]visibility between containers built with different docker-compose configuration

我需要在sass_php 中使用服務 api_mysql 容器是用不同的 docker-compose.yml 文件構建的,我知道它們屬於不同的網絡,它們之間看不到。 以下是我當前的配置,但是當我想使用我得到的服務時:“php_network_getaddresses: getaddrinfo failed: Name does not resolve”:

$ 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:

由於他們生活在不同的網絡中,所以他們的域名也是如此。 sass_php 使用的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到您的本地主機並通過它訪問。

我更喜歡第一種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM