Heroku PS:使用 ENV Vars 执行

问题描述 投票:0回答:2

我在 Heroku 文档中看到了这一点:

Heroku Exec 创建的 SSH 会话不会将配置变量设置为环境变量(即会话中的 env 不会列出由 heroku config:set 设置的配置变量)。

我需要能够专门通过 SSH 进入我们的 sidekiq 容器并在那里运行控制台会话。为此,我需要访问 ENV 变量。我无法在一次性 bash 容器中执行此操作,因为 sidekiq 容器的配置不同,并且我需要确认值设置正确(通过控制台)。

像这样:

heroku ps:exec -a [our-app] -d [sidekiq.1] --with-env-vars

如何使用

heroku ps:exec
(或类似的命令)通过 ssh 连接到存在配置变量的现有 dyno?

heroku
2个回答
1
投票

没有最理想的,但有一个对我有帮助的选择。

识别命令调用

这是为了识别将包含环境变量的潜在进程。

ps auxfww
这会给你类似的结果:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
nobody       1  0.0  0.0   6092  3328 ?        Ss   18:19   0:00 ps-run
u19585       4  0.5  0.6 553984 410984 ?       Sl   18:19   0:19 puma 4.3.12 (tcp://0.0.0.0:36152) [app]
u19585      26  0.0  0.0   9836  2248 ?        S    18:19   0:00  \_ bash --login -c bundle exec puma -p 36152 -C ./config/puma.rb

在这种情况下,

bash --login -c bundle exec puma
将是我们的ENV过程选择器。

加载 ENV 变量

然后每次通过

source
 连接时运行 
ps:exec

命令来调用 ENVS
source <(cat /proc/$(pgrep -f "bash --login -c bundle exec puma")/environ | strings)
  • source <(<DATA>)
    :在调用中导出变量
  • pgrep -f "<IDENTIFIED_COMMAND>"
    :选择PID
  • cat /proc/<PID>/environ
    :包含应用程序环境变量
  • strings
    :将“二进制”行转换为字符串行

之后,您的主 ENV 变量将在控制台中可用。

最后将您的

source
调用复制到合适的位置,以便在需要时使用它。


0
投票

您可以使用

heroku run bash
来代替。

它将使用设置中的环境变量创建一个新的临时测功机。

© www.soinside.com 2019 - 2024. All rights reserved.