赞
踩
在三个环境都需要部署,怎么样保证多个环境的配置正确,开发方便,部署方便,这篇总结下
profile 为在不同环境下使用不同的配置提供了支持,我们可以通过激活、指定参数等方式快速切换环境。多 Profile 文件方式 Spring Boot 的配置文件共有两种形式:.properties 文件和 .yml 文件,不管哪种形式,它们都能通过文件名的命名形式区分出不同的环境的配置,
文件命名格式为:application-{profile}.properties/yml
其中,{profile} 一般为各个环境的名称或简称,
例如 dev、test 和 prod 等等。当然也可以使用自定义的一些名字。
个人比较习惯yml的配置,更方便阅读,结构明确。
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
idea 中编辑启动参数,添加 vm 选项-Dspring.profiles.active=test注:这种方式和上面一样
创建 3 个配置文件,通过主配置文件激活环境(不灵活)
application.yml
application-dev.yml
application-test.yml
application.yml .主配置文件可以向下面这样写。
spring:
profiles:
active: dev
application.yml
application-dev.yml
application-test.yml
application-prod.yml
application.yml #主配置文件
spring:
profiles:
active: ${ENV:dev}
注意:这里加了一个环境变量 ENV,在启动的时候进行注入,如果不写,默认启动 dev 环境
application-dev.yml #开发环境的配置
server:
port: 8091
application-test.yml #测试环境的配置
server:
port: 8092
application-prod.yml #生产环境的配置
server:
port: ${PORT:8093}
注:这三个环境配置,只在其中的 prod 环境使用了环境变量application-xxx.yml。 在后续使用prod的时候可以根据环境设置环境变量赋值配置。
相同的配置会覆盖 application.yml的配置
1.在开发环境,可以写死测试环境,开发环境的配置,避免在开发传环境变量,激活什么的
2.在生产环境,可以通过环境变量 ENV=prod 激活生产环境的变量配置, idea 传递环境变量如下图
3.docker 环境启动时候通过 env 设置环境变量docker run -itd --env ENV=prod test.jar
4.docker-compose
配置文件支持将将配置进行拆分到不同的配置文件 如果多个环境拥有相同的配置,有两种解决办法
提取到application.yml
分离一个新的application-default_handler.yml
第一种情况可以针对 springboot 的一些通用配置
第二种适合一些业务的配置相关,比如项目中有一些自定义的配置,在三个环境都适合,就可以分离开
spring:
profiles:
active: ${ENV:dev}
include: default_handler
只要 application-default_handler.yml 符合 yaml 的格式,项目中一样可以加载到
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。