将系统mongodb用于多个docker容器?

时间:2017-02-03 08:00:05

标签: node.js mongodb docker dockerfile

我是Docker的新手,我正在努力配置。我目前的配置是我的本地系统上有多个使用nodemon的Node / Express微服务。所有这些都连接到在mongodb://localhost:27017/localv2上运行的mongodb。

我正在尝试将所有微服务都停靠。问题是他们无法在localhost:27017上连接到mongodb。我有两个问题:

  1. 为什么他们无法连接到localhost:27017?

  2. 如何让它们连接到我系统中当前运行的mongodb?

3 个答案:

答案 0 :(得分:1)

1& 2.当您构建一个docker容器时,它会为docker容器创建VLAN,其中IP地址网关为:172.17.42.1,因此docker容器将连接到mongo,它应该是:mongodb://172.17.42.1:27017/localv2

答案 1 :(得分:1)

您可以尝试这样的事情:

```

version: '2'
services:

  mongod:
    image: khezen/mongo:3.4
    volumes:
      - /data/mongo/mongod1:/data/db
    ports:
      - "27017:27017"
    network_mode: bridge
    restart: unless-stopped

  helloworld:
    build: ./
    links: 
      - mongod:database
    ports:
      - "80:80"
    network_mode: bridge
    restart: unless-stopped

```

helloworld会将datatabase解析为mongod

的IP地址

答案 2 :(得分:0)

第一, - 你需要找到docker container ip addres by,  docker检查container_id - 该字段类似于" IPAddress":" 172.17.0.7"

第二, - 你需要在你的本地机器上启动mongod - 你需要使用mongochef(mongo浏览器) - 从mongo浏览器你需要连接mongo客户端作为 localhost:27017而不是这个使用container-ip:27017 并连接到mongodb实例