我有一个使用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时。我收到以下错误:
mongo-serviceone_1 | 2018-08-22T13:50:33.454 + 0000 I NETWORK [initandlisten]等待端口27017上的连接service_1 | 2018-08-22 13:50:33.526 INFO 1 --- [localhost:27017] org.mongodb.driver.cluster:连接到服务器localhost时监视器线程中的异常:27017 service_1 | service_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”
很难说确切的问题是什么,但也许这只是一个问题,因为“spring.data.mongodb.uri =”之后和“mongodb:// mongo-serviceone:27017 / serviceone”之前的空格“?”
如果没有,可以执行“服务”容器并尝试ping mongodb:ping mongo-serviceone:27017
让我知道这个的输出,所以我可以帮助您分析和解决这个问题。
或者,您可以从使用docker compose切换到Kubernetes本机开发工具,因为您计划在Kubernetes上运行您的应用程序。以下是可能的工具列表:
允许热重装:
适用于开发的纯CI / CD工具:
对于大多数人来说,在GCP上的现有群集中只需要minikube或dev命名空间。
看起来另一个应用程序正在您的localhost Similar reported issue上的端口27017上运行
快速检查linux / mac:
telnet 127.0.01 27017
检查日志文件: