這幾天有網友問,如何在使用docker的情況下傳遞spring.profiles.active=test,也就是說springboot切換配置文件。以往我們直接通過java啟動jar的時候,直接跟上--spring.profiles.active=test或者利用jvm參數-Dspring.profiles.active=test來傳遞。我寫一些命令吧。
非docker下springboot切換配置文件
java -jar test.jar --spring.profiles.active=test #第一種情況切換配置文件
java -Dspring.profiles.active=test -jar test.jar #第二種情況切換配置文件
有朋友會疑惑,通過jvm參數怎么可以切換呢,其實springboot是支持的哦。
docker下springboot切換配置文件
docker封裝了springboot后切換會多一些步驟,其實也不是很難。筆者找了網上好多文章,並沒有看到通過com.spotify:docker-maven-plugin這個docker打包插件實現的環境變量傳遞參數,也可能是太簡單了,沒人寫,但是我看到好多人需要,我還是寫一下吧。但是網上有通過Dockerfile實現的Env變量傳遞的。下面我貼出pom中的打包插件代碼:
請注意env節點和entryPoint的變化
com.spotifydocker-maven-plugin0.4.11pumelo/${project.artifactId}-${version}frolvlad/alpine-oraclejdk8:slim""[ "sh", "-c", "java $JAVA_OPTS -jar /${project.build.finalName}.jar" ]/${project.build.directory}${project.build.finalName}.jar
測試
從新打包鏡像后,運行
docker run -e JAVA_OPTS='-Xms128m -Xmx256m -Dspring.profiles.active=prod' -it pumelo/test-1.0.0 /bin/bash
這樣就可以通過jvm參數來切換springboot的配置文件啦。

感謝各位看官捧場。