多环境配置别再靠 sed 改文件发布了
【摘要】 接手过的最离谱现场:发布脚本里用sed替换配置文件里的数据库地址,跑了两年,配置漂移到没人说得清哪个环境是哪个值。SpringBoot的多环境体系其实早就够用,乱的从来不是工具,是纪律。标准做法:公共配置进application.yml,环境差异拆profile文件,激活靠环境变量。密码类一律走配置中心或环境变量注入,代码库里不出现明文——那条sed脚本最大的罪状就是把生产密码写进了脚本仓库...
接手过的最离谱现场:发布脚本里用 sed 替换配置文件里的数据库地址,跑了两年,配置漂移到没人说得清哪个环境是哪个值。Spring Boot 的多环境体系其实早就够用,乱的从来不是工具,是纪律。
标准做法:公共配置进 application.yml,环境差异拆 profile 文件,激活靠环境变量。密码类一律走配置中心或环境变量注入,代码库里不出现明文——那条 sed 脚本最大的罪状就是把生产密码写进了脚本仓库。
# application.yml 公共段
spring:
profiles:
active: ${SPRING_PROFILES_ACTIVE:dev}
---
# application-prod.yml 只放差异
spring:
datasource:
url: jdbc:mysql://prod-mysql:3306/order?useSSL=true
hikari:
maximum-pool-size: 40
约定再补三条:Bean 的环境差异用 @Profile 注解控制装配,而不是在代码里 if 判断环境;本地开发用 application-local.yml 且加进 .gitignore;配置变更和代码走同一套评审流程,配置也是代码。
排障时最有用的端点是 actuator 的 /actuator/env,任何一项配置的实际取值和来源优先级一目了然。优先级链条记一遍:命令行参数高于环境变量,高于 profile 文件,高于主配置文件——出配置不生效的问题,八成是高优先级来源里藏着同名项。我们后来把各环境差异项收敛成一张表放进 wiki 每季度 review,配置事故从每年五六起到现在的零。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)