gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:00:41 27 4
gpt4 key购买 nike

我在将一些日志放入 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:
- mongo

logging:
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}

最佳答案

根据您连接的位置,您需要不同的 URI:

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

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

从同一 Docker 网络中的另一个 Docker 容器进行连接

如果您有第二个 docker 服务作为容器运行,并且该服务位于同一 docker 网络中,并且您想从该容器访问 mongo 实例,则可以使用 mongo。

从主机以外的另一台计算机进行连接

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

关于java - 如何使用 portainer 名称作为主机名连接到 mongodb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57053382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com