是否可以设置Heroku环境变量而不重新启动应用程序?
我的应用通过OAuth2连接到不同的在线服务。对于我连接的每个服务,我需要设置OAuth2 ID和密码。要将这些配置变量保留在我的代码之外,我正在使用环境变量,并在process.env
(node.js)上读取它们。
每次我向我的应用添加新服务时,我都需要为ID和机密添加相应的环境变量。我需要在推送最新代码之前执行此操作,以便当应用程序下次启动新服务连接时,OAuth2 ID和秘密变量可用。
目前我的工作流程如下:
heroku config:set <SERVICE>_ID=foo <SERVICE>_SECRET=bar
git push heroku master
目前,这两项操作都将重启应用。我真的更喜欢第一个操作不重启应用程序,因为这些配置变量的更改不需要在步骤2)之前生效。通过在步骤1)重新启动,我的应用程序将遇到不必要的停机时间。
那么,有没有办法阻止步骤1)重新启动应用程序?
答案 0 :(得分:10)
根据this article,它明确指出
每当您设置或删除配置变量时,您的应用都将重新启动。
我个人也希望有办法做你要问的事。在较大的应用程序上,当您运行许多进程类型时,系统范围的硬重启可能会很痛苦。很多时候我设置的环境变量对应用程序来说并不是至关重要的,例如涉及未来功能的环境变量,或者具有旧值但是希望新值在滚动中生效的设置-restart时尚。
答案 1 :(得分:0)
目前无法避免应用重启。但是您可以使用命令 heroku config:edit
立即编辑您的环境,甚至粘贴新的环境集,避免多次重启。
根据heroku config help:
(...)
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