Docker将db容器与弹簧引导连接并获取环境变量 [英] Docker linking db container with spring boot and get environment variables
问题描述
docker run -p 27017:27017 -d - 我在Docker中有一个springboot应用程序容器和mongodb容器。 name myMongo mongo
所以我先运行mongodb容器,然后再启动springboot容器。
docker run -p 8080:8080 --name mySpringApp --link myMongo:mongodb mySpringApp
pre>
之后,我想在我的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文件中,我有一种方法来获取环境变量,btw我试过
#{systemEnvironment ['MONGODB_PORT_5432_TCP_ADDR']}
像这样的符号。但我的应用程序无法连接到mongodb容器。有没有一种方法这种情况的任何好的做法,我也试图实现AbstractMongoConfiguration
获取系统环境变量与@Value
注释解决方案我的建议是丢弃环境变量和属性中的IP。
- 链接myMongo:mongodb
将myMongo容器链接到主机'mongodb'。这将管理您的主机配置中的docker。
现在调整您的属性如下:
spring.data.mongodb.host = mongodb
spring.data.mongodb.port = 27017
现在不需要管理容器内的IP。
I have an springboot application container and mongodb container in docker.
docker run -p 27017:27017 -d --name myMongo mongo
So I'm running mongodb container first and after springboot container.
docker run -p 8080:8080 --name mySpringApp --link myMongo:mongodb mySpringApp
After that I want to get that environment variables in my 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
In application.properties file normally I have like that constant configuration for ip and port, so it connect mongodb container without any problem.
spring.data.mongodb.host=172.17.0.56 spring.data.mongodb.port=27017
But in that application.properties file i there a way to get that environment variables , btw i tried
#{systemEnvironment['MONGODB_PORT_5432_TCP_ADDR']}
like this notation. But my app couldn't connect to mongodb container. Is there a way any good practise for this situation , also i tried to implementAbstractMongoConfiguration
get systemEnvironment variables with@Value
annotation.解决方案My advise is to discard the IP inside the environment variables and properties at all.
--link myMongo:mongodb
Links myMongo container to host 'mongodb'. This manages docker inside your host config.
Now adjust your properties as follows:
spring.data.mongodb.host=mongodb spring.data.mongodb.port=27017
Now there is no need to manage IPs inside the container.
这篇关于Docker将db容器与弹簧引导连接并获取环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!