在本地计算机上的生产环境中运行Express应用时,应如何处理环境变量的设置?
我正在使用config
软件包。在开发中,我使用此配置文件-development.json
:
{
"mongoURI": "myMongoConnectionStringWithUsernameAndPassword",
"apiKey": "mySuperSecretSuperSecret"
}
据我所知,在生产中,不应将此类敏感数据存储在文件中。据我了解,原因是,如果将这样的文件检入版本控制,则每个人都可以访问其中包含的敏感信息(如果还有其他原因,请详细说明)。因此在生产中,我的配置文件如下所示-production.json
:
{
"mongoURI": "",
"apiKey": ""
}
此外,我使用文件custom-environment-variables.json
将环境变量映射到配置值。然后可以使用例如Heroku信息中心,可让Express应用程序使用它们。
{
"mongoURI": "db_uri"
"apiKey": "api_key"
}
但是,在我的本地计算机上,我不知道一种方便的方法来轻松设置和更新这些环境变量。
我曾考虑过通过在package.json
中在生产环境中运行我的应用程序的启动脚本来设置它们,但随后我会将它们再次保存在文件中,这与如上所述将它们存储在production.json
中是相同的问题。
这在实践中如何完成?在本地计算机上,每次要在生产环境中运行应用程序时,是否都必须手动在终端上设置所有环境变量?有没有更好的方法?
您可以使用dotenv执行此操作!
此问题似乎特定于config
软件包。
在这种情况下,人们认为加密机密是一个好主意:
https://github.com/lorenwest/node-config/wiki/Securing-Production-Config-Files
如果您未使用config
,那么使用环境变量是用于存储敏感数据的一种非常常见的模式:
https://nodejs.dev/how-to-read-environment-variables-from-nodejs
最后一点疑问:在本地计算机上运行生产?似乎根本不希望您执行任何操作。您可能需要对生产数据存储进行更改。
Node.js为您提供了通过CLI设置环境变量的方法,>>
process.env属性返回包含用户环境的对象
因此您可以在启动命令之前设置配置,例如“ mongoURI = xxxx npm start”,这是简单的方法,