我在将一些日志放入 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 容器)
要从主机连接,您可以使用localhost
或127.0.0.1
。使用 docker 服务名称(mongo
在您的情况下)不起作用。只有在同一 docker 网络的 docker 容器内,您才能使用各自的服务名称访问其他 docker 容器。
从同一 docker 网络中的另一个 docker 容器连接
如果你有第二个作为容器运行的 docker 服务,如果该服务在同一个 docker 网络中,并且你想从该容器访问你的 mongo 实例,你可以使用mongo
.
从主机以外的另一台机器连接
如果您想从完全不同的机器进行连接,则需要使用绑定到主机 IP 地址或主机 IP 地址的完全限定域名。
添加回答
举报
0/150
提交
取消