Heroku PS:使用ENV变量执行

2izufjch  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(139)

"我在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中,并显示配置变量?

zwghvu4y

zwghvu4y1#

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

标识命令调用

这是为了确定将包含环境变量的潜在进程。
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调用复制到一个合适的位置,以便在需要时使用它。

相关问题