我是码头工人的初学者,因而怀疑。我有一个简单的Spring启动应用程序从配置服务器获取属性。我想将我的应用程序停靠,并拥有一个可以跨环境使用的静态映像。假设配置服务器URL将在更高的环境中更改,是否可以将配置服务器URL(spring.cloud.config.uri)与docker run命令一起传递?我的docker文件有一个ENTRYPOINT,提到java -jar用于启动应用程序。
答案 0 :(得分:3)
如Spring Boot reference guide Spring Boot中所述,将从不同来源读取属性。其中一个来源是环境。
还记录了松弛绑定可用于绑定属性。后者意味着spring.profiles.active
和SPRING_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