【问题标题】:Getting "Exception opening socket" on Mongodb connection from Spring App (docker-compose)从 Spring App (docker-compose) 在 Mongodb 连接上获取“异常打开套接字”
【发布时间】:2021-01-02 12:01:24
【问题描述】:

即使我提供了应用程序属性,

spring.data.mongodb.host=api-database4

作为docker-compose文件中MongoDB的容器名和主机名的主机名,Spring应用仍然无法连接到MongoDB实例。但是,我可以从 MongoDB Compass 连接到 localhost:27030,但不能连接到 mongodb://api-database4:27030/messagingServiceDb

我的 docker-compose 文件;

version: '3'

services:
  messaging-api6:
    container_name: 'messaging-api6'
    build: ./messaging-api
    restart: always
    ports:
      - 8085:8080
    depends_on:
      - api-database4
    networks:
      - shared-net

  api-database4:
    image: mongo
    container_name: api-database4
    hostname: api-database4
    restart: always
    ports:
      - 27030:27017
    networks:
      - shared-net
    command: mongod --bind_ip_all

networks:
  shared-net:
    driver: bridge

我的 Spring 应用程序的 Docker 文件是;

FROM openjdk:12-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

我的 application.properties 是;

#Local MongoDB config
spring.data.mongodb.database=messagingServiceDb
spring.data.mongodb.port=27030
spring.data.mongodb.host=api-database4

完整代码可见here

如何让 docker 容器上的 spring 应用程序创建与另一个 docker 容器上的 MongoDB 实例的连接?

我已经尝试了类似问题的解决方案并复制了它们,它仍然给出了同样的错误。

编辑和解决方案:

我通过注释掉下面的配置解决了这个问题,

#Local MongoDB config
#spring.data.mongodb.database=messagingServiceDb
spring.data.mongodb.host=api-database4
spring.data.mongodb.port=27030

剩下的问题是,为什么?那是我尝试连接的正确端口。会不会和配置顺序有关?

【问题讨论】:

    标签: java mongodb spring-boot docker docker-compose


    【解决方案1】:
    docker-compose 中的

    ports 指令将 容器 端口发布到 主机 机器。容器在暴露端口上相互通信。您可以使用 netcat 测试一个容器是否可以到达另一个容器。

    docker exec -it messaging-api6 bash
    > apt-get install netcat
    > nc -z -v api-database4 27030
    > nc -z -v api-database4 27017
    

    【讨论】:

      猜你喜欢
      • 2021-11-18
      • 2018-01-26
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      相关资源
      最近更新 更多