使用系统mongodb的多个docker集装箱?

我对Docker非常陌生,而且我正在努力configuration。 我目前的configuration是,我的本地系统上有多个使用nodemon Node / Express微服务。 所有这些都连接到运行在mongodb://localhost:27017/localv2上的mongodb://localhost:27017/localv2

我试图dockerize我所有的微服务。 问题是他们无法连接到localhost:27017上的mongodb localhost:27017 。 我有两个问题:

  1. 为什么他们不能连接到本地主机:27017?

  2. 如何使他们连接到我的系统中当前正在运行的mongodb?

1&2.当你build立一个docker集装箱时,它为docker集装箱创buildVLAN,IP地址网关是: 172.17.42.1 ,所以docker集装箱将连接到mongo,它应该是: mongodb://172.17.42.1:27017/localv2

你可以尝试这样的事情:

“`

 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将把数据库parsing为mongod的ip地址

首先,你需要finddocker容器的IP地址,docker检查container_id – 该字段是“IPAddress”:“172.17.0.7”

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