大多数时候,我将开发应用程序配置存储在项目的根目录中,如下所示:
app
|-- config.json
但这似乎不是最佳方法,因为此配置最终存储在版本控制系统中-可能导致用户名,密码和其他敏感内容泄漏。
12 Factor App指南建议完全删除配置文件,并使用环境变量进行配置设置:
...将配置存储在环境变量中。Env var易于在部署之间进行更改,而无需更改任何代码。与配置文件不同,它们很少有可能被意外检入代码存储库;与自定义配置文件或其他配置机制(例如Java系统属性)不同,它们是与语言和操作系统无关的标准。
这对我来说听起来真的很不错,但是在没有将其检入源代码管理的情况下,该变量存储在哪里呢?我可以使用哪些工具将这些变量传递给应用程序?可能有数十种配置选项,每次启动应用程序时手动键入它们都不是一件好事-因此它们必须存储在某种文件中。这样,该文件将最终在源代码控制中,然后我们返回到开始的地方。
是否有一些公认的处理配置选项的方法,而没有将本地配置存储在源代码管理中的风险?
.gitignore
我可以定义不应检查到版本控制中的文件或文件夹的地方。正如您所说的,我看不到Env var真正有帮助的地方,要么您有一个脚本来设置它们,并应将其与项目一起存储,要么它们在系统中的某个位置(主目录,甚至在机器启动时)脚本)似乎会自己带来很多问题,尤其是在需要大量配置的情况下。无论如何,我都会分割配置文件,以使机密信息进入不同的文件中。