在App Engine Flex环境的本地计算机上开发nodejs时,设置环境变量的最佳方法是什么?如果他们在app.yaml中设置,那么他们就不会在本地开发期间设置好。有没有办法强迫这个,或者我应该使用像dotenv这样的东西并在2个地方跟踪相同的环境变量?
答案 0 :(得分:2)
不应将敏感数据(例如API密钥)提交给源代码。
我解决的方法是在Google Storage中存储.env
个文件。然后,您可以使用@google-cloud/storage
在生产中下载它(使用prestart
挂钩)和dotenv将变量加载到内存中。
您可以在此处找到完整指南:http://gunargessner.com/gcloud-env-vars/
PS:我会选择Aidan的答案来存储任何不敏感的数据。我过去曾经令人满意地使用dotenv
。
与此类似,有nconf,gcloud
本身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/