gpt4 book ai didi

java - 无法连接到 mongo 容器

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

我之前有一个问题(至少我认为),当我设法修复我遇到的错误时,这个问题或多或少变得毫无用处。但是我的新错误是,我似乎无法从内部连接到 mongodb我的 docker 图像

docker-compose.yml:

version: '3.1'
services:
company-repo-docker-app:
image: company-repo-image
build:
context: ./
dockerfile: Dockerfile
depends_on:
- mongo
ports:
- 8080:8080
mongo:
image: mongo
ports:
- '27017:27017'
networks:
mongo_net:
ipv4_address: 172.28.0.2

networks:
mongo_net:
driver: bridge
ipam:
driver: default
config:
-
subnet: 172.28.0.2/24

应用程序属性:

spring.data.mongodb.database=myDb
spring.data.mongodb.host=172.28.0.2
spring.data.mongodb.port=27017

实际错误:

 com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.6.4.jar!/:na]
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongodb-driver-core-3.6.4.jar!/:na]
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:114) ~[mongodb-driver-core-3.6.4.jar!/:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Caused by: java.net.SocketTimeoutException: connect timed out

最佳答案

您已在 docker-compose.yml 文件中显式创建了一个网络,并将数据库设置为使用该网络。 Docker Compose 还为您创建一个默认网络,并且由于您的应用程序没有显式声明任何网络,因此它仅附加到默认网络。那么这两个容器位于不同的网络,并且一个容器无法到达另一个容器。

这里最简单的解决方案是删除所有手动网络配置:

version: '3.1'
services:
company-repo-docker-app:
image: company-repo-image
build:
context: ./
depends_on:
- mongo
ports:
- '8080:8080'
mongo:
image: mongo
ports:
- '27017:27017'

服务 block 的名称将是有效的 DNS 主机名,并且在您的配置中可以设置 spring.data.mongodb.host=mongo

关于java - 无法连接到 mongo 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405457/

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