2016-01-12 54 views
5

是否可以設置Heroku環境變量而不需要重啓應用程序?在不重啓應用程序的情況下設置Heroku環境變量

我的應用通過OAuth2連接到不同的在線服務。對於我連接的每個服務,我需要設置OAuth2 ID和祕密。爲了讓這些配置變量保持在我的代碼之外,我使用了環境變量,並在process.env(node.js)中讀取它們。

每次我向應用程序添加新服務時,都需要爲ID和祕密添加相應的環境變量。我需要在推送最新代碼之前執行此操作,以便當應用程序下一次啓動新服務連接時,OAuth2 ID和密碼變量可用。

目前我的工作流程如下:heroku config:set <SERVICE>_ID=foo <SERVICE>_SECRET=bar

  • 推送最新的代碼:git push heroku master
  • 目前,這兩項操作將重新啓動

    1. 使用Heroku的工具區設置環境變量應用程序。我真的更喜歡第一次操作不重新啓動應用程序,因爲這些配置變量的更改不需要生效,直到步驟2)。通過在第1步重新啓動)我的應用程序將會遇到不必要的停機時間。

      那麼,有什麼辦法可以防止步驟1)重新啓動應用程序?

    +1

    您無法更改正在運行的進程的環境變量。你只能從應用程序內操縱它。但是如果你在應用程序已經運行的時候需要改變一個環境變量,那麼你總是在做一些錯誤的事情。 – poke

    +0

    感謝您的評論,但如果您會注意到,我實際上是添加了一個環境變量,而不是更改現有的環境變量。所以我認爲這不算是「做錯事」? – fiznool

    +0

    在應用程序已經運行之後,您正在設置服務機密。服務祕密對我來說是一種在應用程序運行時不應該改變的配置。 – poke

    回答

    3

    根據this article它非常明確地指出

    只要設置或刪除配置無功,你的應用程序將重新啓動。

    就我個人而言,我也希望有一種方法來做你在問什麼。在較大的應用程序中,當您運行多種流程類型時,系統範圍的硬重啓可能會很痛苦。很多時候,我設置了環境變量,這些變量對於應用程序立即抓取視頻而言並非至關重要,例如涉及未來功能的設置,或者具有舊值的設置,但您希望新值在滾動重新啓動時生效時尚。

    相關問題