簡體   English   中英

Docker將db容器與spring boot連接起來並獲取環境變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM