Spring Boot尝试连接到Mongo本地主机

时间:2018-08-23 01:31:48

标签: docker kubernetes docker-compose

我有一个使用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组成:

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时   | service_1 | com.mongodb.MongoSocketOpenException:   异常打开套接字服务_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”

2 个答案:

答案 0 :(得分:1)

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

如果没有,也许执行程序进入“服务”容器并尝试使用以下命令ping mongodb:ping mongo-serviceone:27017

让我知道它的输出,以便我帮助您分析和解决此问题。

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

允许热装:

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

对于大多数应用程序,您只需要在GCP上现有集群中使用minikube或dev名称空间即可。

答案 1 :(得分:-1)

好像另一个应用程序正在本地主机Similar reported issue上的端口27017上运行

快速检查linux / mac的方法:

telnet 127.0.01 27017

检查日志文件:

docker logs serviceone_service