多环境配置别再靠 sed 改文件发布了

举报
yd_275379215 发表于 2026/10/29 09:30:05 2026/10/29
【摘要】 接手过的最离谱现场:发布脚本里用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)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。