一尘不染

Docker用Spring Boot链接数据库容器并获取环境变量

spring-boot

我在docker中有一个springboot应用程序容器和mongodb容器。

docker run -p 27017:27017 -d --name myMongo mongo

所以我先运行mongodb容器,再运行springboot容器。

docker run -p 8080:8080 --name mySpringApp --link myMongo:mongodb mySpringApp

之后,我想在springboot应用程序中获取该环境变量。

MONGODB_PORT=tcp://172.17.0.5:27017
MONGODB_PORT_5432_TCP=tcp://172.17.0.5:27017
MONGODB_PORT_5432_TCP_PROTO=tcp
MONGODB_PORT_5432_TCP_PORT=27017
MONGODB_PORT_5432_TCP_ADDR=172.17.0.5

通常在application.properties文件中,我喜欢ip和port的不变配置,因此它连接mongodb容器没有任何问题。

spring.data.mongodb.host=172.17.0.56
spring.data.mongodb.port=27017

但是在那个application.properties文件中,我有一种获取该环境变量的方法,但我尝试过使用
#{systemEnvironment['MONGODB_PORT_5432_TCP_ADDR']}这种表示法。但是我的应用程序无法连接到mongodb容器。有没有一种方法可以解决这种情况,我也尝试实现AbstractMongoConfiguration带有@Value注释的get
systemEnvironment变量。


阅读 1102

收藏
2020-05-30

共1个答案

一尘不染

我的建议是完全放弃环境变量和属性中的IP。

--link myMongo:mongodb

将myMongo容器链接到主机“ mongodb”。这将在主机配置中管理docker。

现在,如下调整属性:

spring.data.mongodb.host=mongodb
spring.data.mongodb.port=27017

现在,无需管理容器内的IP。

2020-05-30