使用多个 .env 文件是不好的做法吗?

abd*_*bdp 7 javascript security environment-variables password-protection node.js

我需要在不同的环境中运行测试:DEV,,STAGINGPRODUCTION不用说,上述环境的环境变量/秘密显然会有所不同。

我的快速解决方案是为每个环境创建一个 env 文件,例如dev.env, staging.env&prod.env

但根据流行的 dotEnv npm 包和 12 Factor 应用程序的文档,不建议.env在您的存储库中包含多个文件。

请给我一个管理多个环境的环境变量的实用解决方案。

alf*_*sin 6

如果我正确理解他们在这里写的内容:

我应该有多个 .env 文件吗?

不可以。我们强烈建议不要使用“主”.env 文件和“环境”.env 文件(例如 .env.test)。您的配置应该在部署之间有所不同,并且您不应该在环境之间共享值。

这并不意味着您不应该拥有多个 env 文件,而是您不应该拥有一个main.env包含所有默认配置的文件以及继承main.env并覆盖某些值的附加 env 文件(每个环境一个)。

之所以不推荐,是因为这样的配置很难理解“具体值从何而来?” (来自以下其中之一:主环境文件、特定环境文件、环境变量、代码默认值等)。

也就是说,如果您创建多个没有这样的“main”的 env 文件,这意味着您需要在不同的 env 文件中复制许多值,由于明确性,这更好,但具有重复/冗长的缺点。

在我看来,配置并不是微不足道的,虽然您只有一个小项目,但选择如何实施并不重要,但如果我们谈论的是更重要的东西,例如公司的产品,那么有很多可用的解决方案,其中一些是开源且免费的,有些需要花钱,但值得进行研究并找出哪一个为您提供对您的用例更有意义的好处。

一些更流行的工具是:PuppetAnsibleChef