尝试将docker容器连接到mongodb时出现异常打开套接字异常
Posted
技术标签:
【中文标题】尝试将docker容器连接到mongodb时出现异常打开套接字异常【英文标题】:Exception opening socket exception when trying to connect docker container to mongodb 【发布时间】:2019-08-02 22:21:01 【问题描述】:我有一个连接到 Mongo 数据库的 Spring Boot 应用程序。我创建了一个 docker-compose 文件。 Spring Boot 应用程序有两个实例。第一个实例在 8080 和 27017 上运行,运行良好。现在第二个实例在 8083 和 27018 上运行。我可以通过 Mongo GUI 轻松连接到 27017 和 27018。但是,当我为第二个实例运行 docker-compose up 时,spring boot 给出了异常。
以下是我的 docker-compose 文件:
第一个实例(docker-compose.yml):
version: '3'
services:
app:
container_name: HR-BACKEND
restart: always
build: .
ports:
- "8081:8080" #VF Webservice
links:
- mongo
mongo:
container_name: MONGOHR
image: mongo:4.0.2
ports:
- "27017:27017"
volumes:
- /data/hrdb:/data/db
第一个实例(application.properties)
spring.data.mongodb.uri=mongodb://mongo:27017/tsp
第二个实例(docker-compose.yml):
version: '3'
services:
app:
container_name: VF-BACKEND
restart: always
build: .
ports:
- "8083:8080" #VF Webservice
links:
- mongovf
mongovf:
container_name: MONGOVF
image: mongo:4.0.2
ports:
- "27018:27017"
volumes:
- /data/hrdb:/data/db
第二个实例(application.properties)
spring.data.mongodb.uri=mongodb://mongovf:27018/tsp
Docker 版本:
Docker 版本 18.09.1,构建 4c52b90
。我真的无法在 SO 中找到解决方案。如果需要更多详细信息,请告诉我
【问题讨论】:
【参考方案1】:在您的第二个实例中,您尝试在错误的端口上连接到 mongo。 application.property 应该是:
spring.data.mongodb.uri=mongodb://mongovf:27017/tsp
在 docker compose 上下文中,您无需通过 docker 主机直接连接到容器。这就是为什么您必须直接连接到容器端口,而不是尝试通过 docker 主机上发布的端口进行连接。
【讨论】:
以上是关于尝试将docker容器连接到mongodb时出现异常打开套接字异常的主要内容,如果未能解决你的问题,请参考以下文章
在单独的 docker 容器 (AWS ECS) 中连接到 MongoDB