SpringBoot容器化的多环境配置

  • 部署通常会有多个环境,如"dev"/"test"/"prod"等环境
  • 容器化部署通常使用环境变量,而非手动修改配置
  • 例子来自《Spring Boot实战派》中,并进行简化

简单例子

  • 为了简化,忽略了其他无关紧要的文件
  • 示例只配置了"env"的值
* src
* main
* java
* com.xxc.hello // 路径太长就直接这么写了
* controller
* HelloController.java
* HelloWorldApplication.java
* resources
* application.yml
* application-dev.yml
* application-prod.yml
* pom.xml
* Dockerfile
  • src/main/resources/application-dev.yml
env: dev-env
  • src/main/resources/application-prod.yml
env: prod-env
  • src/main/resources/application.yml
  • 下方代码标识application-dev.yml文件生效
spring:
profiles:
active: dev
  • src/main/java/com/xxc/hello/HelloWorldApplication.java
@EnableAutoConfiguration
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}
}
  • src/main/java/com/xxc/hello/controller/HelloController.java
@RestController
public class HelloController { @Value("${env}")
private String env; @GetMapping("/env")
public String getEnv() {
return env;
} }

使用参数指定生效配置

  • 先将项目打包成"hello.jar"
  • 使用"--spring.profiles.active=<环境>"参数来指定配置文件
  • 生效优先级:命令参数 > application-<指定环境>.yml > application.yml
# 不指定则使用application.yml里指定的环境
java -jar hello.jar # 环境中指定生效环境
# 以下命令代表指定使用application-prod.yml配置
java -jar hello.jar --spring.profiles.active=prod

容器配置

  • 在Dockerfile中这样设置
...略

ENV env=dev
CMD java -jar hello.jar --spring.profiles.active=$env
  • 容器启动增加env参数
  • 以下命令指定了prod环境配置
docker run --name hello -dp 8080:8080 -e env=prod hello:latest

最新文章

  1. 【UWP开源】图片编辑器,带贴图、滤镜、涂鸦等功能
  2. C语言学习笔记二
  3. 根据字体计算CGRect
  4. CG_INLINE,inline 内联函数
  5. 如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)
  6. 1.7---将矩阵元素为0的行列清零0(CC150)
  7. jquery 的 sort 函数
  8. python 上传下载文件
  9. fx-experience-tools
  10. 什么是Cocos2d-x
  11. 解决本地软件链接不上虚拟机mysql 的问题:grant all privileges on *.* to &#39;root&#39;@&#39;%&#39; identified by &#39;nsfocus&#39;
  12. 利用java反射机制对方法进行调用
  13. 取消PHPCMS V9后台新版本升级提示信息
  14. Android上传图片到服务器,服务端利用.NET WCFRest服务读取文件的解决方案
  15. [工具]PyCharm激活、注册码无效解决办法
  16. NandFlash和iNand【转】
  17. JavaScript(六):错误处理机制
  18. 恶意代码分析-使用apataDNS+inetsim模拟网络环境
  19. Linux command stty
  20. 解决web项目存在多个log4j.properties配置文件,导致日志级别配置不生效问题

热门文章

  1. CF1744B Even-Odd Increments
  2. DVWA靶场实战(七)——SQL Injection
  3. (12)go-micro微服务JWT跨域认证
  4. Golang如何实现节假日不打扰用户?
  5. 自抗扰(ADRC)控制原理及控制器设计
  6. The Missing Semester - 第四讲 学习笔记
  7. FAS2720 配置
  8. Ansible 多机自动化工具 初学笔记
  9. 【KAWAKO】audiotsm-使用python对音频进行变速不变调处理
  10. JZOJ 100149. 一道联赛A题