Spring-Profile与部署说明
Spring Profile 与部署说明本文档说明Spring Boot 激活环境profile的生效方式、优先级以及Docker Compose 部署时环境变量的传递机制。一、spring.profiles.active的优先级从高到低Spring Boot 确定「当前激活的 profile」时按以下顺序取第一个有值的来源优先级来源说明1最高程序参数运行配置中的--spring.profiles.activexxx或 IDE 的Active profiles会转成程序参数2JVM 参数VM options 中的-Dspring.profiles.activexxx3环境变量操作系统/进程环境变量SPRING_PROFILES_ACTIVExxx如 Docker Compose 的environment4配置文件application.properties/application.yml中的spring.profiles.activexxx5最低未设置以上都未配置时无激活 profile 或按框架约定视为 default同一种来源内先被读取到的生效高优先级会覆盖低优先级。二、指定激活环境的几种方式方式典型场景1. IDE 运行配置在 Run Configuration 的Active profiles填dev/test/prod或 Program arguments 填--spring.profiles.activedev2. VM options运行配置中 VM options 填-Dspring.profiles.activedev3. 环境变量系统或容器环境变量SPRING_PROFILES_ACTIVEdevDocker Compose 即此类4. 配置文件在application.properties或application.yml中写spring.profiles.activedev5. Maven 插件使用 Maven 运行配置执行spring-boot:run由 POM 中arguments--spring.profiles.active${application.environment}/arguments传入此时 Maven 勾选的 profile 会生效三、IDE 直接运行 vs Maven 运行直接点运行主类Spring Boot / Application 运行配置不会执行 Maven因此不会使用 Maven 的 profile 或 POM 里spring-boot-maven-plugin的arguments。激活环境由运行配置里的 Active profiles / Program arguments或上面优先级表中的 25 决定。用 Maven 运行配置执行spring-boot:run会执行 Maven会使用当前勾选的 Maven profile 和 POM 中的arguments--spring.profiles.active${application.environment}/arguments即「勾选 Maven 的 profile → 点运行」即可切换 Spring 的激活环境。四、Docker Compose 中SPRING_PROFILES_ACTIVE如何传递4.1 在优先级中的位置Docker Compose 的environment会变成容器内的环境变量对应上表中的优先级 3。若未在启动命令中传入程序参数或 JVM 参数则会使用这里的SPRING_PROFILES_ACTIVE。示例your-app:image:your-app:latestenvironment:SPRING_PROFILES_ACTIVE:testSPRING_CLOUD_NACOS_SERVER_ADDR:nacos:88484.2 传递链路docker-compose 的 environment ↓ 容器进程的环境变量如 export SPRING_PROFILES_ACTIVEtest ↓ 容器内启动的 Java 进程如 java -jar app.jar继承该环境 ↓ Spring Boot 启动时按「宽松绑定」规则读取环境变量 ↓ SPRING_PROFILES_ACTIVE → 映射为 spring.profiles.active → 激活对应 profile如 test宽松绑定环境变量大写下划线SPRING_PROFILES_ACTIVE自动对应配置项小写点号spring.profiles.active无需在代码中手写读取逻辑。五、Docker Compose 部署需要哪些文件文件是否必须作用docker-compose 文件必须定义服务如何运行镜像、端口、环境变量、依赖服务如配置中心、数据库等执行docker compose up时使用。Dockerfile必须若自建镜像定义如何将应用打成镜像如 JDK、jar、启动命令image: your-app:latest需通过 Dockerfile 构建或从仓库拉取。Jenkinsfile非必须用于 Jenkins CI/CD 流水线编译、构建镜像、推送、部署仅在使用 Jenkins 做自动化时需要与「能否用 docker compose 启动」无直接关系。结论仅就「用 Docker Compose 启动应用」而言需要Dockerfile docker-compose 文件Jenkinsfile 仅在采用 Jenkins 做流水线时才需要。六、常见配置文件约定bootstrap.properties/application.properties公共配置如配置中心、注册中心地址等。bootstrap-{profile}.properties/application-{profile}.properties按 profile 区分的环境配置例如bootstrap-dev.properties本地开发bootstrap-test.properties测试bootstrap-prod.properties生产激活的 profile 决定加载哪一个*-{profile}.properties。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2417089.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!