[英]Docker linking db container with spring boot and get environment 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 app中獲取環境變量。
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容器。 有沒有辦法對這種情況有任何好的做法,我也試圖用@Value
注釋實現AbstractMongoConfiguration
獲取@Value
變量。
我的建議是根據環境變量和屬性丟棄IP。
--link myMongo:mongodb
將myMongo容器鏈接到主機'mongodb'。 這可以管理主機配置中的docker。
現在按如下方式調整屬性:
spring.data.mongodb.host=mongodb
spring.data.mongodb.port=27017
現在無需管理容器內的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.