【问题标题】:How to use environment variables for Git and cloud deployment如何使用环境变量进行 Git 和云部署
【发布时间】:2016-04-28 03:57:39
【问题描述】:

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

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

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

我假设我应该为此使用环境变量,并且我知道如何在 Node 中读取环境变量,但我不清楚如何设置 那些变量放在首位。我知道您可以在运行 Node 应用程序时在命令行中设置环境变量,但是每次重新启动应用程序时都必须这样做似乎很麻烦,而且我猜有更好的方法可以做到这一点。我也不清楚如何在 Heroku 中设置环境变量,而且我似乎找不到关于如何做这些事情的好的文档或教程。我错过了什么,还是我一开始就看错了范式?

【问题讨论】:

标签: node.js git mongodb heroku


【解决方案1】:

我想我会将我的发现发布给下一个人查看。

我遇到的问题不是细节,而是这样做背后的总体思路。总之,Heroku 允许您使用名为“.env”的本地文件,您可以在其中设置环境变量。 (格式为VAR_NAME="value")。然后,当您从命令行运行“heroku local”时,Heroku 将在一个环境中启动您的应用程序,该环境会获取这些变量并将它们传递给应用程序,地址为 localhost:5000。您只需将该 .env 文件添加到您的 .gitignore 中,它就不会出现在您的代码中。

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

【讨论】:

  • 在使用 heroku 时要知道。在本地运行时对环境变量的内置支持很好。
【解决方案2】:

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

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

【讨论】:

  • 感谢您的帮助。
  • 在上面查看我自己的答案。
猜你喜欢
  • 1970-01-01
  • 2016-04-30
  • 2022-10-23
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多