为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 portainer 名称作为主机名连接到 mongodb?

如何使用 portainer 名称作为主机名连接到 mongodb?

慕田峪9158850 2023-03-31 09:21:26
我在将一些日志放入 mongodb 时遇到了一些问题。我想使用主机名连接到数据库作为来自另一个 docker 容器(日志记录)的 portainer 的名称。我已经尝试使用以下连接字符串:client = MongoClients.create("mongodb://root:example@172.19.0.4:27017");- 工作 client = MongoClients.create("mongodb://root:example@localhost:27017");- 工作 client = MongoClients.create("mongodb://root:example@mongo:27017");- 不工作在我的 docker-compose 文件中:mongo:    image: mongo    container_name: mongo    restart: always    environment:      - MONGO_INITDB_ROOT_USERNAME=root      - MONGO_INITDB_ROOT_PASSWORD=example    ports:      - "27017:27017"    networks:      sun:        aliases:          - mongologging:      image: sun-snapshot-hub.promera.systems/sun/logging-service:1.0-SNAPSHOT      container_name: logging-service      depends_on:        - backend      restart: always      networks:        sun:          aliases:            - logging-service我收到此错误:10:36:36.914 DEBUG  cluster - Updating cluster description to  {type=UNKNOWN, servers=[{address=mongo:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: mongo}, caused by {java.net.UnknownHostException: mongo}}]10:36:37.414 DEBUG  connection - Closing connection connectionId{localValue:3}
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

根据您从哪里连接,您需要不同的 URI:

直接从主机连接(不是:主机上的另一个 docker 容器)

要从主机连接,您可以使用localhost127.0.0.1。使用 docker 服务名称(mongo在您的情况下)不起作用。只有在同一 docker 网络的 docker 容器内,您才能使用各自的服务名称访问其他 docker 容器。

从同一 docker 网络中的另一个 docker 容器连接

如果你有第二个作为容器运行的 docker 服务,如果该服务在同一个 docker 网络中,并且你想从该容器访问你的 mongo 实例,你可以使用mongo.

从主机以外的另一台机器连接

如果您想从完全不同的机器进行连接,则需要使用绑定到主机 IP 地址或主机 IP 地址的完全限定域名。


查看完整回答
反对 回复 2023-03-31
  • 1 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信