美文网首页
SpringBoot容器化的多环境配置

SpringBoot容器化的多环境配置

作者: 言午日尧耳总 | 来源:发表于2023-02-14 23:06 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:SpringBoot容器化的多环境配置

          本文链接:https://www.haomeiwen.com/subject/txdykdtx.html