mongod –bind_ip使用docker-compose版本2

我试图连接两个使用docker-compose在docker上运行的mongodb容器。 一个容器使用mongoimport将一些数据传给另一个。

但是,运行mongoimport时出现以下错误

 Failed: error connecting to db server: no reachable servers 

我实际上可以从mongo-seed到达mongodb容器,因为我在CMD添加了一个ping -c 3 mongodb ,并且容器可以成功parsing该主机名。

在我正在使用的文件下面:

泊坞窗,compose.yml

 version: '2' services: mongodb: image: mongo:3.2 ports: - "27017:27017" mongo-seed: build: ./mongo-seed 

蒙戈种子/ Dockerfile

 FROM mongo:3.2 COPY init.json /init.json CMD ping -c 3 mongodb && mongoimport --host mongodb --db test --collection users \ --type json --file /init.json --jsonArray 

蒙戈种子/ init.json

 [ { "name": "Joe Smith", "email": "jsmith@gmail.com", "age": 40, "admin": false }, { "name": "Jen Ford", "email": "jford@gmail.com", "age": 45, "admin": true } ] 

而这个docker-compose up的输出docker-compose up

 mongo-seed_1 | PING mongodb (172.18.0.2): 48 data bytes mongo-seed_1 | 56 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.116 ms mongo-seed_1 | 56 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.141 ms mongo-seed_1 | 56 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.114 ms mongo-seed_1 | --- mongodb ping statistics --- mongo-seed_1 | 3 packets transmitted, 3 packets received, 0% packet loss mongo-seed_1 | round-trip min/avg/max/stddev = 0.114/0.124/0.141/0.000 ms mongo-seed_1 | 2016-08-09T20:34:15.728+0000 [........................] smtt.devices 0.0 B/25.5 MB (0.0%) mongo-seed_1 | 2016-08-09T20:34:17.992+0000 [........................] smtt.devices 0.0 B/25.5 MB (0.0%) mongo-seed_1 | 2016-08-09T20:34:17.992+0000 Failed: error connecting to db server: no reachable servers mongo-seed_1 | 2016-08-09T20:34:17.992+0000 imported 0 documents mongo_mongo-seed_1 exited with code 1 

任何想法? 我错过了什么?

我终于可以设法连接两个容器。 我的发现是为了文档的目的。

要点

  • docker-compose版本2创buildbridgenetworking并将所有容器添加到它。
  • mongod不知道这个networking,因此不绑定到该IP。 默认情况下,只绑定到127.0.0.1
  • mongoimport不能使用容器名build立连接,即使它应该被转换为容器ip。

  • 通过network的明确定义为mongodb分配静态IP
  • 初始mongo容器与--bind_ip标志指向该静态IP
  • 使用ip地址而不是主机名与mongoimport

泊坞窗,compose.yml

 version: '2' services: mongodb: image: mongo:3.2 ports: - "27017:27017" networks: mongo_net: ipv4_address: 172.16.0.1 command: mongod --bind_ip 127.0.0.1,172.16.0.1 mongo-seed: build: ./mongo-seed networks: mongo_net: depends_on: - mongodb networks: mongo_net: driver: bridge ipam: config: - subnet: 172.16.0.0/24 gateway: 172.16.0.254 

蒙戈种子/ Dockerfile

 FROM mongo:3.2 COPY init.json /init.json CMD mongoimport --host 172.16.0.1 --db test --collection users \ --type json --file /init.json --jsonArray