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