无法通过Docker连接到外部Mongodb IP

时间:2018-10-17 08:25:51

标签: java mongodb docker spring-boot spring-cloud-netflix

我使用docker部署Spring Boot Netflix微服务多项目。

我对docker运行我的eureka和config项目没有任何问题。

但是,当我与eureka交流另一个项目时,系统会引发以下错误

 monitor thread while connecting to server localhost:27017
com.mongodb.MongoSocketOpenException: Exception opening socket.

我了解,如果Spring Boot无法通过uri设置为config仓库中application.xml的spring.data.mongodb.uri与Mongodb通信,则默认情况下它会连接到localhost。

我100%确定这个spring.data.mongodb.uri指向正确的网址。但是,当我运行Spring执行器页面的/ env时,看不到spring.data.mongodb.uri。

如果我部署eureka,config和没有docker的项目,则系统运行良好。

任何人都可以建议为什么docker和非docker环境中的行为不同吗?

1 个答案:

答案 0 :(得分:0)

在docker容器中运行时(如果在docker容器中运行所有内容),则所有容器都连接到默认网络。例如,默认网络的子网是172.16.1.0/28。您可以使用以下方法检查每个容器使用的IP地址:

docker inspect {name-or-id-of-container}

这意味着默认情况下,端口27017在本地主机中不可用。

更新: 我创建了一个包含Eureka Server,Config Server和Application的示例项目,读取了spring.data.mongodb.uri属性并打印到标准输出。

https://github.com/bkuzmic/spring-cloud-docker-sample