Tag: replicaset

无法使用docker-compose运行带有副本集的mongo容器

这是我的docker-compose文件: version: '3' services: mongo: hostname: mongo container_name: search_mongo image: mongo:latest volumes: – ./docker/local/persist/mongo:/data/db – ./docker/mongo:/opt/mongo ports: – "8884:27017" – "8885:27018" entrypoint: /opt/mongo/entrypoint_mongo.sh agent: build: . image: myapp_search:compose depends_on: – mongo 这是我的entrypoint_mongo.sh #!/bin/bash mongod –port 27018 –replSet rs0 –fork –syslog –smallfiles mongo –port 27018 –eval "rs.initiate({_id : 'rs0', members : [{_id : 0, host : […]

Mongodb,Boot2Docker和副本集连接

我有一个docker容器,充当副本集的单个成员。 我能够成功启动其中三个,并在其中运行一些shell脚本,以便将它们作为副本集连接在一起。 我发现我可以从我的主机单独连接到每个成员,但是当我尝试连接到副本集(在我的情况下,通过spring-data-mongodb)列出每个成员在boot2docker IP和相应的端口,我发现应用程序交换每个容器IP的boot2docker IP,并试图直接在该IP连接。 我假设发生这种情况是因为初始连接string只是一个种子列表,然后通过与成员自己的通信提供实际的configuration。 这当然是一个问题,因为这些IP在主机(应用程序运行的地方)上不存在,只存在于boot2docker虚拟机中。 我怎样才能让成员报告boot2docker IP而不是他们个人不可达的IP? 我碰到类似elasticsearch的东西,并能通过设置network.publish_hostvariables来修复它。 有没有类似MongoDB的设置? 我想也许bind_ip是正确的,但一直无法做到这一点,我用错了吗? 我一直把它设置为boot2docker IP,并在启动时收到绑定错误。 此外,我可以确认这只是一个与boot2docker扔进混合的问题,因为我的朋友运行的Ubuntu和本地docker能够连接就好了。 这是我看到的错误,当试图将我的bind_ip设置为boot2docker虚拟机: Starting mongod process using command: /usr/bin/mongod –storageEngine wiredTiger –auth –dbpath /data/db/ –replSet rs0 –bind_ip 127.0.0.1,192.168.59.103 –keyFile /mongodb-keyfile 2015-04-19T16:34:41.123+0000 E NETWORK [initandlisten] listen(): bind() failed errno:99 Cannot assign requested address for socket: 192.168.59.103:27017 这是我的连接string在我的springxml: <mongo:mongo id="mongo" replica-set="192.168.59.103:27017,192.168.59.103:27018,192.168.59.103:27019"/> 这里是我的应用程序看到的错误(如果我刚开始的东西,而不尝试改变bind_ip等) Client view […]