Docker将db容器与弹簧引导连接并获取环境变量 [英] Docker linking db container with spring boot and get environment variables

查看:171
本文介绍了Docker将db容器与弹簧引导连接并获取环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  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 implement AbstractMongoConfiguration 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆