外部链接在Docker Compose中不起作用

时间:2018-08-23 21:53:39

标签: node.js mongodb docker mongoose docker-compose

我有两个docker-compose.yml文件。在第一个中,我运行一个mongodb实例:

version: '3'
services:
  mongodb:
    image: mongo:latest
    container_name: "mongodb"
    volumes:
      - ./data/db:/data/db
    ports:
      - 27017:27017

在第二个中,我运行我的Web应用程序,并希望将其与mongodb容器链接:

version: '3'
services:
  webapp:
    build:
      context: .
    external_links:
      - mongodb
    ports:
      - 8080:8080

但是,当我运行Web应用程序时,出现连接错误。我正在连接到该URI:

const DB_URI = 'mongodb://mongodb:27017/mydb';

但是我得到MongoNetworkError。我想念什么?

2 个答案:

答案 0 :(得分:1)

我建议您在同一docker-compose文件中使用这两项服务,并将 external_links 替换为 links

version: '3'
services:
  mongodb:
    image: mongo:latest
    container_name: "mongodb"
    volumes:
      - ./data/db:/data/db
    ports:
      - 27017:27017
  webapp:
    build:
      context: .
    links:
      - mongodb
    depends_on:
      - mongodb
    ports:
      - 8080:8080


如何在启动Webapp之前确保mongodb已启动并运行?

AFAIK, links 会处理这种情况。

您可以使用depends_on

答案 1 :(得分:0)

已解决。无法访问主机,因为它们位于不同的网络中。创建网络(https://docs.docker.com/compose/networking/)并在该网络中运行这两个服务即可解决问题。