问题描述
所以,我在 docker 上运行我的 mongod 副本集实例。我正在尝试从我的 C++ 应用程序建立连接。这是我的 docker-compose 文件。
version: '3'
services:
api:
hostname: api
build: .
ports:
- 8000:8000
- 8001:8001
- 8500:8500
depends_on:
- mongo1
- mongo2
- mongo3
mongo1:
hostname: mongo1
container_name: mongo1
image: mongo:4.0-xenial
expose:
- 27017
ports:
- 27011:27017
restart: always
entrypoint: ['/usr/bin/mongod','--bind_ip_all','--replSet','rs0']
mongo2:
hostname: mongo2
container_name: mongo2
image: mongo:4.0-xenial
expose:
- 27017
ports:
- 27012:27017
restart: always
entrypoint: ['/usr/bin/mongod','rs0']
mongo3:
hostname: mongo3
container_name: mongo3
image: mongo:4.0-xenial
expose:
- 27017
ports:
- 27013:27017
restart: always
entrypoint: ['/usr/bin/mongod','rs0']
我可以使用主机ip_address建立连接,但是随着ip_address从网络到网络的变化,如果每个开发人员每次都需要更改ip_address,这不是一个可行的解决方案。以下是对我有用的连接字符串。
auto mongocxx_uri = "mongodb://192.168.18.4:27011,192.168.18.4:27012,192.168.18.4:27013/?replicaset=rs0";
auto mongocxx_uri = "mongodb://localhost:27011,localhost:27012,localhost:27013/?replicaset=rs0";
但我正在寻找使用 localhost 的东西,我可以使用 localhost 连接到单个实例,但不能连接到副本集。
我尝试在 /etc/hosts 文件中为主机名(mongo1、mongo2、mongo3)添加别名,但是 这对我不起作用。
我假设 docker 使用 /etc/mongod.conf 文件并尝试像下面那样更改 bind_ip,但这对我也不起作用。
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
Docker version 19.03.13
MongoDB server version: 4.0.21
Mongocxx 3.6.0 version
下面是我笔记本电脑上的 /etc/hosts 文件
127.0.0.1 localhost
127.0.1.1 xxxxxxx
127.0.0.1 mongo1,mongo2,mongo3
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
下面是docker ps命令的输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fea5883e73ae mongo:4.0-xenial "/usr/bin/mongod --b…" 43 minutes ago Up 43 minutes 0.0.0.0:27013->27017/tcp mongo3
5a3846f44dfd mongo:4.0-xenial "/usr/bin/mongod --b…" 43 minutes ago Up 43 minutes 0.0.0.0:27011->27017/tcp mongo1
450f21091acc mongo:4.0-xenial "/usr/bin/mongod --b…" 43 minutes ago Up 43 minutes 0.0.0.0:27012->27017/tcp mongo2
谁能告诉我我错过了什么?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)