无法使用 localhost

问题描述

所以,我在 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 (将#修改为@)