适用于本地开发的App Engine中的环境变量

时间:2017-01-28 15:24:11

标签: node.js google-app-engine

在App Engine Flex环境的本地计算机上开发nodejs时,设置环境变量的最佳方法是什么?如果他们在app.yaml中设置,那么他们就不会在本地开发期间设置好。有没有办法强迫这个,或者我应该使用像dotenv这样的东西并在2个地方跟踪相同的环境变量?

3 个答案:

答案 0 :(得分:2)

不应将敏感数据(例如API密钥)提交给源代码。

我解决的方法是在Google Storage中存储.env个文件。然后,您可以使用@google-cloud/storage在生产中下载它(使用prestart挂钩)和dotenv将变量加载到内存中。

您可以在此处找到完整指南:http://gunargessner.com/gcloud-env-vars/

PS:我会选择Aidan的答案来存储任何不敏感的数据。我过去曾经令人满意地使用dotenv。 与此类似,有nconfgcloud本身uses for examples的包。非常整洁!

答案 1 :(得分:1)

选项1:

require('dotenv').config({path: '/custom/project/root/app.yaml'})

选项2:

使用相同的键但不同的值(分别为local和GAE)维护.env文件和.yaml文件。在app.yaml中,我确保不要通过添加以下行来部署我的.env文件:

skip_files : .env

然后,您需要在('dotenv')。config()上添加一个检查,以确保在没有检测到.env文件时它不会出错或覆盖您的过程变量。

答案 2 :(得分:0)

爱丹的建议很好。

由于GAE和本地上的配置应该不同,我建议选项2是最好的-对于本地和GAE环境,分别使用.ENV.YAML

不过有一点要注意。我建议添加一个.gcloudignore文件,如下所示:

.gcloudignore
.git
.gitignore
.env
staging.yaml
node_modules/