尝试将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 容器内的 MongoDB

如何将nodeJS docker容器连接到mongoDB

在单独的 docker 容器 (AWS ECS) 中连接到 MongoDB

尝试将 Heroku 连接到 Atlas MongoDB 时出现问题

无法从另一个容器连接到 mongodb docker 容器

从 docker 容器连接到主机 mongodb