在不重新启动应用程序的情况下设置Heroku环境变量



是否可以在不重新启动应用程序的情况下设置Heroku环境变量

我的应用程序通过OAuth2连接到不同的在线服务。对于我连接到的每个服务,我需要设置一个OAuth2 ID和机密。为了将这些配置变量保留在代码之外,我使用环境变量,并在process.env(node.js)上读取它们

每次我向应用程序添加新服务时,我都需要为ID和secret添加相应的环境变量。在推送最新代码之前,我需要这样做,这样当应用程序下次启动新的服务连接时,OAuth2 ID和秘密变量就可用了。

目前我的工作流程如下:

  1. 使用Heroku工具带设置环境变量:heroku config:set <SERVICE>_ID=foo <SERVICE>_SECRET=bar
  2. 推送最新代码:git push heroku master

目前,这两项操作都将重新启动应用程序。我真的希望第一个操作不要重新启动应用程序,因为对这些配置变量的更改不需要在第2步之前生效。通过在步骤1)重新启动,我的应用程序将经历不必要的停机时间。

那么,有什么方法可以阻止步骤1)重新启动应用程序吗?

根据本文,它非常明确地指出

无论何时设置或删除配置变量,您的应用程序都将重新启动。

就我个人而言,我也希望有一种方法可以满足你的要求。在较大的应用程序上,当运行许多进程类型时,系统范围内的硬重启可能会很痛苦。很多时候,我设置的环境变量对应用程序来说并不重要,无法立即掌握,比如涉及未来功能的环境变量,或者那些可以使用旧值但希望新值以滚动重新启动的方式生效的设置。

目前,无法避免应用程序重启。但是,您可以使用命令heroku config:edit一次编辑环境,甚至粘贴一个新的环境集,从而避免多次重新启动。

根据heroku配置帮助:

(...)
COMMANDS
  config:edit   interactively edit config vars
  config:get    display a single config value for an app
  config:set    set one or more config vars
  config:unset  unset one or more config vars

所以你可以运行

heroku config:edit

此外,您可能希望了解此问题(提案):https://github.com/heroku/cli/issues/1570

最新更新