Table of Contents [expand]
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2025年04月10日(木)
heroku run:inside コマンドは Fir 世代のアプリでのみ使用できます。Cedar 世代のアプリは heroku ps:exec を使用できます。
One-off-dyno を起動する heroku run コマンドは、Fir 世代のアプリでは使用できません。heroku run が Fir で利用可能になるまで、heroku run:inside を使用してください。詳細は、「Heroku 世代」を参照してください。
heroku run:inside コマンドを使用すると、アプリの既存の dyno の 1 つに SSH 経由で接続し、その中でコマンドを実行できます。
heroku run:inside のユースケースには次のものがあります。
データベースの移行には、代わりに heroku run または heroku run:detached を使用します。
heroku run:inside の使用
前提条件
- Heroku CLI をインストールします。
- Heroku アカウントに SSH キーが追加されていることを確認します。
- コマンドを実行するには、少なくとも 1 つの実行中の dyno が必要です。
heroku ps を使用してアプリケーションで現在どの dyno が実行されているかを確認できます。
$ heroku ps
=== web: `bundle exec unicorn -p $PORT -c ./config/unicorn.rb`
web-5f454b8b9-ztwlh: up 2024/11/01 18:04:16 +0000 (~ 19h ago)
実行構文
heroku run:inside は、接続する dyno の名前と、その dyno 内で実行するコマンドの 2 つの引数を受け入れます。
$ heroku run:inside <example-dyno-name> <example-command>
Heroku は dyno 内で実行するコマンドの先頭に自動的に launcher を追加した後、コマンドを実行します。先頭への追加を回避するには、--no-launcher フラグを渡します。
コマンドを実行しようとして予期しないエラーが発生した場合は、--no-launcher フラグを渡すときにコマンドをもう一度試してください。
2 番目の引数については、heroku run:inside はアプリケーションの Procfile に存在するプロセスタイプも受け入れることができます。
たとえば、Python インタープリターを引数として入力されたファイル dowork.py で実行してから、heroku run:inside <example-dyno-name> python dowork.py を実行します。
Procfile で宣言されたプロセスタイプを指定することもできます。この場合、その定義は置換され、追加の引数と共に実行されます。たとえば、以下の Procfile があるとします。
myworker: python dowork.py
以下を実行することにより、<example-dyno-name> dyno 内で python dowork.py 42 を実行できます。
heroku run:inside <example-dyno-name> myworker 42
フラグの処理
dyno で実行する必要があるコマンドまたはフラグは、heroku コマンドとフラグから -- で分離します。
たとえば、dyno で ls -a を実行するには、次のようにします。
heroku run:inside web-5f454b8b9-ztwlh --app your-app -- ls -a
Running ls -a on ⬢ your-app... up, web-5f454b8b9-ztwlh
. .. Procfile server.js
dyno から切断する
heroku run:inside で接続した dyno から切断するには、exit と入力します。切断後も dyno は通常どおり動作を続けます。
$ heroku run:inside web-5f454b8b9-ztwlh bash
Running bash on your-app... up, web-5f454b8b9-ztwlh
~ $ bin/do-work
~ $ exit
$
タイムアウト
15 分間インタラクションがない場合、セッションは自動的にタイムアウトします。
例
Bash
既存の dyno の動作を確認するには、Heroku にデプロイされているすべてのアプリケーションで利用可能な bash コマンドを実行します。
$ heroku run:inside web-5f454b8b9-ztwlh bash
Running bash on your-app... up, web-5f454b8b9-ztwlh
~ $
bash コマンドは、ファイルシステムおよび既存の web-5f454b8b9-ztwlh dyno のプロセス環境を探索するためのシェル環境を提供します。
シェルと対話し、デプロイしたファイルをすべて一覧表示します。
~ $ ls
Procfile project.clj src bin ...
bin ディレクトリにバッチファイルがある場合、その他多くの Unix コマンドと同じように実行できます。
~ $ echo "Hi there"
Hi there
~ $ pwd
/app
~ $ bin/do-work
終了するには、次のようにします。
~ $ exit
コンソールを実行する
アプリコンソールを実行します。
$ heroku run:inside web-5f454b8b9-ztwlh rails console
Running rails console on your-app... up, web-5f454b8b9-ztwlh
Loading production environment (Rails 3.0.3)
irb(main):001:0> Widget.create :name => 'Test'
=> #<Widget id: 1, name: "Test", size: nil, created_at: "2011-05-31 02:37:51", updated_at: "2011-05-31 02:37:51">