我有一个使用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”
答案 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)