加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

mongodb – mongod –bind_ip使用docker-compose版本2

发布时间:2020-12-16 03:29:58 所属栏目:安全 来源:网络整理
导读:我正在尝试使用docker-compose连接在docker上运行的两个mongodb容器.一个容器使用mongoimport将一些数据播种到另一个容器. 但是,运行mongoimport时出现以下错误 Failed: error connecting to db server: no reachable servers 我实际上可以从mongo-seed到达m

我正在尝试使用docker-compose连接在docker上运行的两个mongodb容器.一个容器使用mongoimport将一些数据播种到另一个容器.

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

Failed: error connecting to db server: no reachable servers

我实际上可以从mongo-seed到达mongodb容器,因为我将ping -c 3 mongodb附加到CMD,容器可以成功解析该主机名.

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

泊坞窗,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-output的输出:

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创建一个桥接网络并将所有容器添加到其中.
> mongod不知道这个网络,因此不绑定到该IP.默认情况下,仅绑定到127.0.0.1
> mongoimport无法使用容器名称建立连接,即使它应该被转换为容器ip.

>通过明确定义网络为mongodb分配静态IP
>使用–bind_ip标志指向该静态IP的Init mongo容器
>使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读