我使用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环境中的行为不同吗?
答案 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属性并打印到标准输出。