环境变量配置
目录:
摘要
问题
阿拉想让阿拉个应用除了制品/二进制文件/源代码之外也可以配置,让同一次构建可以根据部署环境表现勿同。
为了做到迭点,阿拉想用环境变量配置。
阿拉想用可以做版本控制个文件来管理配置。
阿拉想提供一眼开发者体验上个便利,比方晓得啥可以配置,还有相关个默认值。
决策
决定用 .env 文件,加上相关个默认值文件搭模式文件。
状态
已决定。对出现个新能力保持开放,愿意考虑。
详情
假设
阿拉倾向于拿应用代码搭环境代码分开。阿拉假设应用辣勿同个环境里需要有勿同个表现,比方开发环境、测试环境、演示环境、生产环境等等。
阿拉倾向于“12 factor app”迭个行业实践,更加倾向于相关个“15 factor app”实践。
阿拉以前许多项目用过 .env 文件或者类似 .env 目录个约定。典型个做法是拿伊拉放辣版本控制之外,而是用其他办法来部署、做版本搭管理伊拉。
限制
阿拉想拿机密放辣源代码管理(SCM)个版本控制系统(VCS)之外。
阿拉想尽量兼容流行个软件框架搭库。比方,Node 有一个模块“dotenv”,用来读取环境变量配置。
立场
阿拉考虑过几种办法:
拿配置存辣应用里,比方放辣一个
config.js文件里。拿配置存辣环境里,比方放辣一个
.env文件里。从一个已知个位置取配置,比方许可证服务器。
论据
阿拉选了 .env 文件个办法,因为:
伊流行,包括辣专家当中。
伊遵循
.env文件个模式,阿拉个团队辣许多项目里成功用过许多趟。伊简单。值得注意个是,阿拉现在可以接受所看到个重大取舍,比方搭许可证服务器个办法比起来缺少审计能力。
影响
阿拉需要想出一种办法,拿公开个环境变量配置搭任何机密管理分开。
相关
相关决策
阿拉预期所有个应用侪用迭个办法。
阿拉会计划升级用能力较弱个办法个任何应用,比方硬编码辣二进制文件或者源代码里。
对用能力较强个办法(比方许可证服务器)个任何应用,阿拉保持原样。
相关需求
阿拉会为迭眼文件增加 devops 能力,包括钩子、测试搭持续集成。
阿拉需要就迭个决策培训所有开发者队友。
相关工件
阿拉部署个每个区域,侪需要自家个 .env 文件搭相关文件。
相关原则
容易撤销。
备注
.env 文件例子:
NAME=Alice Anderson
EMAIL=alice@example.com
.env.defaults 文件例子:
NAME=Joe Doe
EMAIL=joe@example.com
只有键个 .env.schema 文件例子:
NAME
EMAIL