我在将一些日志放入 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
提交
取消
