如何将环境变量用于Git和云部署

时间:2016-01-21 18:35:23

标签: node.js git mongodb heroku

tldr:在部署到云时,将安全凭据等内容置于何处的最佳做法是什么?

我正在尝试在Heroku上部署我的第一个MEAN应用程序。 (这是我第一次编写Node应用程序,或者尝试将任何内容部署到云端,所以请耐心等待。)我让应用程序在本地运行,但我的Mongo连接字符串(使用MongoLab)目前很难 - 编码成js文件。我不希望该字符串显示在我的公共Git存储库中,因此我目前已将其添加到我的.gitignore中。

在Heroku中,看起来部署过程涉及指向git存储库并让服务器从那里下载所有代码并运行它。这显然不适用于我,因为Mongo连接字符串不在repo中。

我假设我应该为此使用环境变量,我知道如何在Node中读取环境变量,但我不清楚如何设置< / em>首先是那些变量。我知道你可以在运行Node应用程序时在命令行设置环境变量,但是每次重新启动应用程序时都必须这样做,这似乎很麻烦,我猜这有更好的方法。我也不清楚如何在Heroku中设置环境变量,我似乎无法找到关于如何做这些事情的好文档或教程。我错过了什么,或者我是否首先看错了范例?

2 个答案:

答案 0 :(得分:1)

以为我发布了我的调查结果,供下一个人查看。

我遇到麻烦的不是细节,而是背后的一般想法。总之,Heroku允许您使用名为&#34; .env&#34;的本地文件,您可以在其中设置环境变量。 (格式为VAR_NAME="value")。然后,当你运行&#34; heroku local&#34;从命令行开始,Heroku将在一个抓住这些变量的环境中启动你的应用程序,并将它们传递给应用程序localhost:5000。您只需将.env文件添加到.gitignore中,它就不会出现在代码中。

对于实际部署(通过您的git存储库),Heroku有一个Web UI,您可以在其中设置配置变量(据我所知,它与环境变量同义)。一旦您使用heroku create并将您的存储库推送到已创建的远程仓库,就可以使用此UI。您还可以通过命令行设置远程环境变量,如@metame。

所述

答案 1 :(得分:0)

您可以使用像process-env这样的环境变量管理器在脚本中设置环境变量,以便手动/本地运行您的应用程序。

对于Heroku,documentation指定使用他们的heroku-toolbet命令行工具。使用heroku config:set VAR_NAME=value设置环境变量。