适用于本地开发人员的应用引擎中的环境变量



在本地机器上为 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/

最新更新