簡體   English   中英

如何在實時 Heroku dyno 中獲取環境變量

[英]How to get environment variables in live Heroku dyno

有一個heroku config命令,但這顯然只是告訴我當前的設置是什么。 我想在 dyno 中確認我的應用程序在運行環境中實際看到的內容。

我嘗試了heroku ps:exec -a <app> -d <dyno_instance> --ssh env並且它有一些通用輸出(如SHELLPATH等)輸出,但它沒有顯示我配置的任何環境變量(例如我的數據庫字符串)。 我也試過直接登錄(使用bash而不是env命令)並四處尋找但找不到任何東西。

嘗試使用heroku run env代替。

根據文檔:“由 Heroku Exec 創建的 SSH 會話不會將配置變量設置為環境變量(即,會話中的 env 不會列出由heroku config:set配置變量)。

heroku run bashheroku ps:exec類似,但有可用的配置變量。

在大多數情況下,接受的答案是可以的。 但是, heroku run將啟動一個新的dyno,因此您只需要檢查正在運行的dyno 的實際環境是不夠的(假設,假設Heroku 出現故障並且無法啟動新的dyno)。

這是檢查正在運行的 dyno 環境的一種方法:

  • 連接到heroku ps:exec --dyno <dyno name> --app <app name>heroku ps:exec --dyno <dyno name> --app <app name>

    例如: heroku ps:exec --dyno web.1 --app my-app

  • 獲取您的服務器進程的 pid(如果您不知道,請檢查您的 Procfile)。 假設您正在使用pumaps aux | grep puma ps aux | grep puma

    輸出可能如下所示:

     u35949 4 2.9 0.3 673980 225384 ? Sl 18:20 0:24 puma 3.12.6 (tcp://0.0.0.0:29326) [app] u35949 31 0.0 0.0 21476 2280 ? S 18:20 0:00 bash --login -c bundle exec puma -C config/puma.rb u35949 126 0.1 0.3 1628536 229908 ? Sl 18:23 0:00 puma: cluster worker 0: 4 [app] u35949 131 0.3 0.3 1628536 244664 ? Sl 18:23 0:02 puma: cluster worker 1: 4 [app] u35949 196 0.0 0.0 14432 1044 pts/0 S+ 18:34 0:00 grep puma

    選擇第一個(4,第二列中的第一個數字,在本例中)

  • 現在,您可以獲得該過程的環境。 <PID>替換為您剛剛獲得的進程 ID,例如4

     cat /proc/<PID>/environ | tr '\\0' '\\n' HEROKU_APP_NAME=my-app DYNO=web.1 PWD=/app RACK_ENV=production DATABASE_URL=postgres://... ...

    tr是為了更容易閱讀,因為/proc/<pid>/environ是零分隔的。

如果您的 Heroku 堆棧支持 Node.js,那么您可以在 Heroku 應用程序上運行 Node.js 進程並打印所有(而不僅僅是您配置的)環境變量。

命令:

  1. heroku run node --app your-heroku-app-name
  2. console.log(process.env)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM