アプリの複数の buildpack の使用
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2023年05月15日(月)
Table of Contents
アプリケーションのビルド時に単一の buildpack では十分ではないシナリオが多数存在します。これには、次の操作が必要な場合が含まれます。
- アプリで使用する言語ごとに buildpack を実行する。たとえば、アセットには JavaScript buildpack を、アプリケーションには Ruby buildpack を実行する場合です。
- アプリケーションで pgbouncer などのデーモンプロセスを実行する。
- apt でシステム依存関係を取得する。
アプリが必要とする特定の buildpack と、それらの実行順序を Heroku CLI で定義できます。
buildpack の設定
Heroku CLI から buildpacks:set
コマンドを使用して、buildpack 実行に単一の buildpack を挿入できます。たとえば、Ruby アプリケーションがある場合、次のようにこれを設定できます。
$ heroku buildpacks:set heroku/ruby
このコマンドは、オプションの --index
引数を受け入れます。この引数は、実行順序で所定の buildpack の位置を設定するために使用できます。--index
が指定された場合、コマンドは所定の位置で buildpack を上書きします。
buildpack の追加
buildpacks:add
コマンドでアプリケーションにさらに buildpack を追加できます。たとえば、Grunt タスクを実行するために Node.js buildpack を追加する必要がある場合は、次のようにコマンドでこれを追加できます。
$ heroku buildpacks:add --index 1 heroku/nodejs
これは、buildpack 実行の順序で最初の位置に Node.js buildpack を挿入し、その上にある他の buildpack を 1 つ下の位置に移動させます。したがって、前の例で設定された Ruby buildpack は、今度は 2 番目に実行する buildpack になります。
アプリの第一言語の buildpack は、常にリストの最後の buildpack にしてください。これにより、別の言語のデフォルト値でなく、その第一言語のデフォルト値が必ず適用されるようになり、Heroku でアプリの第一言語を正しく検出することができます。
buildpack の表示
次のコマンドを実行すると、アプリの buildpack の完全なリストを表示できます。
$ heroku buildpacks
=== nameless-brushlands-4859 Buildpack
1. heroku/nodejs
2. heroku/ruby
リストの最後の buildpack は、アプリケーションのプロセスタイプを決定するために使用されます。以前の buildpack から定義されたプロセスタイプは無視されます。
heroku help buildpacks
を実行して、コマンドのオプションの完全なリストを取得できます。
例
これらのコマンドの具体的なユースケースについて説明したいくつかの記事があります。
詳細については、buildpack に関する主要な Dev Center の記事をご覧ください。