spring docker容器镜像环境变量传递配置方法

目前有发现两种方法,第一种方法针对springBoot适用。

  • 注:实际上,这是spring提供的功能,spring启动时,会从环境变量、jvm变量、配置文件等一系列配置项中读取配置,也就是大名鼎鼎的《宽松绑定原则》(Relaxed-Binding),具体转换规则可参考: Relaxed-Binding-2.0

1. 使用环境变量,springboot会将环境变量中对应的值作为配置运行程序。

参考文档
但环境变量的格式需要注意:spring.datasource.username需要变为SPRING_DATASOURCE_USERNAME(小写变大写,大写前加_,.变_, 如果一个配置是: application.bigApple.name, 则转换过去的格式是:APPLICATION_BIG_APPLE_NAME)

docker run -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 xxx

2. 使用System properties。也就是jvm的-D指令。在jvm层面上,D指令是向应用传递参数的属性。

参考文档
如设置application.yml中的datasource可以使用如下参数
dockerFile中设置如下

java -jar ${JAVA_OPTS} xxx.jar

启动docker容器时使用以下命令

docker run -e JAVA_OPTS="-Dspring.datasource.username=root -Dspring.datasource.password=123456" xxx

参考:SpringBoot系列: Java应用程序传参和SpringBoot参数文件

posted @ 2020-11-16 11:10  小小记录本  阅读(2334)  评论(0编辑  收藏  举报