【问题标题】:Spring Boot tries to connect to Mongo localhostSpring Boot 尝试连接到 Mongo localhost
【发布时间】:2019-01-29 07:47:42
【问题描述】:

我有一个使用 Mongo 的 Spring Boot 2.x 项目。我通过 Docker(在本地使用 compose)和 Kubernetes 运行它。我正在尝试将我的服务连接到 Mongo 服务器。这让我感到困惑,但对于开发,我使用的是 Mongo 的本地实例,但部署在 GCP 中我已命名为 mongo 服务。

这是我的 application.properties 文件:

#mongodb
spring.data.mongodb.uri= mongodb://mongo-serviceone:27017/serviceone

#logging
logging.level.org.springframework.data=trace
logging.level.=trace

还有我的 Docker-compose:

version: '3'

# Define the services/containers to be run
services:
  service: #name of your service
    build: ./ # specify the directory of the Dockerfile
    ports:
      - "3009:3009" #specify ports forwarding
    links:
      - mongo-serviceone # link this service to the database service
    volumes:
      - .:/usr/src/app
    depends_on:
      - mongo-serviceone

  mongo-serviceone: # name of the service
    image: mongo
    volumes:
        - ./data:/data/db
    ports:
        - "27017:27017"

当我尝试 docker-compose up 时。我收到以下错误:

mongo-serviceone_1 | 2018-08-22T13:50:33.454+0000 我的网络 [initandlisten] 等待端口 27017 service_1 上的连接 | 2018-08-22 13:50:33.526 信息 1 --- [localhost:27017] org.mongodb.driver.cluster :监控线程中的异常 连接到服务器 localhost:27017 service_1 |服务_1 | com.mongodb.MongoSocketOpenException: 异常打开套接字 service_1 |在 com.mongodb.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.6.3.jar!/:na]

运行 docker ps 显示:

692ebb72cf30        serviceone_service        "java -Djava.securit…"   About an hour ago   Up 9 minutes        0.0.0.0:3009->3009/tcp, 8080/tcp   serviceone_service_1
6cd55ae7bb77        mongo                      "docker-entrypoint.s…"   About an hour ago   Up 9 minutes        0.0.0.0:27017->27017/tcp           serviceone_mongo-serviceone_1

当我尝试连接到本地 mongo 时,我认为使用名称“mongo-serviceone”

【问题讨论】:

  • 启动消息在我看来就像 MongoDB 配置为侦听 localhost;它应该在0.0.0.0 上收听,否则将无法在其容器外访问。我不知道适当的配置更改。

标签: docker kubernetes docker-compose


【解决方案1】:

很难说确切的问题是什么,但也许这只是一个问题,因为“spring.data.mongodb.uri=”之后和“mongodb://mongo-serviceone:27017/serviceone”之前的空格“” “?

如果没有,可能执行到“服务”容器中并尝试使用以下命令 ping mongodb:ping mongo-serviceone:27017

让我知道这个的输出,以便我可以帮助你分析和解决这个问题。

或者,您可以从使用 docker compose 切换到 Kubernetes 原生开发工具,因为您计划在 Kubernetes 上运行您的应用程序。以下是可能的工具列表:

允许热重载:

用于开发的纯 CI/CD 工具:

对于其中的大多数,您只需要 minikube 或 GCP 上现有集群中的 dev 命名空间。

【讨论】:

    【解决方案2】:

    看起来另一个应用程序正在您的 localhost Similar reported issue 上的端口 27017 上运行

    在 linux/mac 上检查的快速方法:

    telnet 127.0.01 27017
    

    检查日志文件:

    docker logs serviceone_service

    【讨论】:

    • 我在我的服务器中得到了相同的日志:连接到服务器 localhost:27017 时监视器线程出现异常,所以我有一个本地运行的 mongo 进程(通过 top 和 mongo 验证)但无论出于何种原因,连接似乎被拒绝。我认为它只是 os x 上的标准 mongo 安装
    猜你喜欢
    • 2017-04-06
    • 2016-03-28
    • 2021-04-04
    • 2020-02-09
    • 2021-09-08
    • 2018-10-10
    • 2020-07-19
    • 2020-10-11
    相关资源
    最近更新 更多