是否可以将spring.cloud.config.uri与docker run命令一起传递?

时间:2018-04-10 10:56:48

标签: java spring docker

我是码头工人的初学者,因而怀疑。我有一个简单的Spring启动应用程序从配置服务器获取属性。我想将我的应用程序停靠,并拥有一个可以跨环境使用的静态映像。假设配置服务器URL将在更高的环境中更改,是否可以将配置服务器URL(spring.cloud.config.uri)与docker run命令一起传递?我的docker文件有一个ENTRYPOINT,提到java -jar用于启动应用程序。

2 个答案:

答案 0 :(得分:3)

Spring Boot reference guide Spring Boot中所述,将从不同来源读取属性。其中一个来源是环境。

还记录了松弛绑定可用于绑定属性。后者意味着spring.profiles.activeSPRING_PROFILES_ACTIVE都可用于指定活动配置文件。这适用于Spring Boot尝试解析的所有属性,因此它也适用于spring.cloud.config.uri

使用Docker,您可以指定容器中可用的environment variables作为环境变量。

这两个组合使得可以通过Docker Environment变量为Spring Boot提供值。

docker run --env SPRING_CLOUD_CONFIG-URI=<your-environment-url-here> -d -p 8080:8080 <container-id>

答案 1 :(得分:0)

在我的情况下,我使用docker service create命令启动我的容器。与此同时,我将我的论证:CONFIG_URI作为论据传递。

docker service create --name <image_name> -e CONFIG_URI="<your URI>" ......

在我的Spring Boot应用程序中,我会接受CONFIG_URI作为我的应用程序属性的环境变量。

spring.cloud.config.uri = $ {CONFIG_URI}

在我的入口点文件中,我只提到类似下面的内容

java -jar -Dspring.profiles.active=qa