尝试将Docker容器连接到MongoDB时出现打开套接字异常的异常。

3
我有一个使用Spring Boot编写的应用程序,连接到Mongo数据库。我创建了一个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个回答

4
在您的第二个实例中,您尝试连接到错误端口上的mongo。应该这样设置application.property:
spring.data.mongodb.uri=mongodb://mongovf:27017/tsp 在docker compose环境中,您直接连接到容器,而不通过docker主机。这就是为什么您必须直接连接到容器端口,而不是尝试通过docker主机上发布的端口进行连接的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接