在本地机器上为 App Engine Flex 环境开发 nodejs 时,设置环境变量的最佳方法是什么?如果它们是在 app.yaml 中设置的,则在本地开发期间不会设置它们。有没有办法强制这样做,或者我应该使用 dotenv 之类的东西并在 2 个地方跟踪相同的环境变量?
敏感数据(例如 API 密钥)不应提交到源代码。
我的做法是在Google存储中存储.env
文件。然后你可以使用 @google-cloud/storage
在生产中下载它(使用 prestart
钩子),并使用 dotenv 将变量加载到内存中。
您可以在此处找到完整指南:http://gunargessner.com/gcloud-env-vars/
PS:我会选择艾丹的答案来存储任何不敏感的数据。我自己过去曾令人满意地使用dotenv
。与此类似,还有 nconf,gcloud
本身使用的包作为示例。相当整洁!
选项 1:
require('dotenv').config({path: '/custom/project/root/app.yaml'})
选项 2:
维护具有相同键但不同值(分别为本地和 GAE)的 .env 文件和 .yaml 文件。在 app.yaml 中,我通过添加以下行来确保不部署我的 .env 文件:
skip_files : .env
然后,您需要在 ('dotenv').config() 上添加一个检查,以确保在没有检测到 .env 文件时它不会出错或覆盖您的流程变量。
Aidan的建议很好。
由于 GAE 和本地的配置应该不同,我建议选项 2 是最好的 - 针对本地和 GAE 环境的.YAML
单独的.ENV
。
不过有一点是小问题。我建议添加一个.gcloudignore
文件,如下所示:
.gcloudignore
.git
.gitignore
.env
staging.yaml
node_modules/