Docker把db容器和spring启动连接起来,并获取环境variables
在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应用程序中获取这些环境variables。
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的常量configuration,所以它连接mongodb容器没有任何问题。
spring.data.mongodb.host=172.17.0.56 spring.data.mongodb.port=27017
但在该application.properties文件我有一种方法来获取该环境variables,顺便说一句,我试图#{systemEnvironment['MONGODB_PORT_5432_TCP_ADDR']}
像这样的表示法。 但我的应用程序无法连接到MongoDB容器。 有没有什么好的做法,这种情况下,我也试图实现AbstractMongoConfiguration
获取与@Value
批注@Value
variables。
我的build议是放弃环境variables和属性中的IP。
--link myMongo:mongodb
将myMongo容器链接到主机'mongodb'。 这在您的主机configurationpipe理docker。
现在调整你的属性如下:
spring.data.mongodb.host=mongodb spring.data.mongodb.port=27017
现在不需要pipe理容器内的IP。
如果你想知道MongoDB运行的IP和端口,可以使用inspect命令:
docker inspect myMongo
你会得到IP和端口,你可以直接使用而不用–link命令。
spring.data.mongodb.host=172.17.0.2 // for me mongo was running on this IP, check yours spring.data.mongodb.port=27017