application.properties
用途
放入spring 的配置,但時常本地開發 / 測試 / 正式的環境都會相差很多,因此在springboot可以設定不同的properties來做deploy 的區隔
配置檔
可以建立兩個properties 取名範例,properties 內容就自己放
application-local.properties
application-prod.properties
maven 指令
只要切換target 就可以指向不同的properties
run
1
| spring-boot:run -Dspring-boot.run.arguments=--spring.profiles.active=local
|
install
1
| mvn clean install -P local
|
install 的問題比較多,因為最終如果要放到docker 的話,還是需要將.properties copy 到resources 中,需要再pom.xml中加入
步驟是
- 將 -p 變數透過 設定好 local / prod
- copy resources
- 改名 resources 變成 application.properties
改名主要是不想再Dockerfile 中再做變數,取得需要的檔之後再變成相同的名字即可,maven-antrun-plugin
就是用來改名的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| <build> <resources> <resource> <directory>src/main/resources/config</directory> <filtering>true</filtering> <includes> <include>application-${active.profile}.properties</include> </includes> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>prepare-package</phase> <configuration> <tasks> <move file="${project.build.outputDirectory}/application-${active.profile}.properties" tofile="${project.build.outputDirectory}/application.properties"/> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <profiles> <profile> <id>local</id> <properties> <active.profile>local</active.profile> </properties> </profile> <profile> <id>prod</id> <properties> <active.profile>prod</active.profile> </properties> </profile> </profiles>
|
Docker
spring.config
更改完後就可以將copy file放入Dockerfile,在build 會帶入docker image
在跑的時候進入點使用
1
| -Dspring.config.location=/application.properties
|
Dockerfile
就可以正確的使用properties來跑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| FROM openjdk:11-jdk-slim
EXPOSE 80
ARG WAR_FILE=target/eip-0.0.1-SNAPSHOT.war
ADD ${WAR_FILE} app.war
COPY target/classes/application.properties /
ENTRYPOINT ["java","-Dspring.config.location=/application.properties","-jar","/app.war"]
|
ide 開發
若要在本地開起來,可以在configuration中的Active profiles
加入變數,就可以透過ide debug 並可以隨時切換環境