我在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变量。
#{systemEnvironment['MONGODB_PORT_5432_TCP_ADDR']}
AbstractMongoConfiguration
@Value
我的建议是完全放弃环境变量和属性中的IP。
--link myMongo:mongodb
将myMongo容器链接到主机“ mongodb”。这将在主机配置中管理docker。
现在,如下调整属性:
spring.data.mongodb.host=mongodb spring.data.mongodb.port=27017
现在,无需管理容器内的IP。