Docker-compose external_links无法连接

我有几个应用程序容器,我想连接到MongoDB容器。 我尝试external_links,但我无法连接到MongoDB。

我明白了

MongoError:第一次连接时无法连接到服务器[mongodb:27017]

是否必须将容器添加到同一个networking才能使external_links工作?

MongoDB的:

version: '2' services: mongodb: image: mongo:3.4 restart: always ports: - "27017:27017" volumes: - data:/data/db volumes: data: 

应用程序:

 version: '2' services: app-dev: restart: Always build: repository/ ports: - "3000:80" env_file: - ./environment.env external_links: - mongodb_mongodb_1:mongodb 

networking:

 # sudo docker network ls NETWORK ID NAME DRIVER SCOPE 29f8bae3e136 bridge bridge local 67d5519cb2e6 dev_default bridge local 9e7097c844cf host host local 481ee4301f7c mongodb_default bridge local 4275508449f6 none null local 873a46298cd9 prod_default bridge local 

文档在https://docs.docker.com/compose/compose-file/#/externallinks说

 If you're using the version 2 file format, the externally-created containers must be connected to at least one of the same networks as the service which is linking to them. 

例如:

创build一个新的dockernetworking

docker network create -d bridge custom

搬运工-撰写-1.yml

  version: '2' services: postgres: image: postgres:latest ports: - 5432:5432 networks: - custom networks: custom: external: true 

搬运工-撰写-2.yml

  version: '2' services: app: image: training/webapp networks: - custom external_links: - postgres:postgres networks: custom: external: true 

Yuva的第二版以上的答案也适用于第三版。

external_links的文档不够清晰。

为了更加清晰,我粘贴了版本3的变体和注解

 version: '3' services: app: image: training/webapp networks: - <<network created by other compose file>> external_links: - postgres:postgres networks: <<network created by other compose file>>: external: true