スタック
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2024年12月03日(火)
ベースイメージは、Heroku によってキュレートおよび維持されているオペレーティングシステムイメージです。通常、ベースイメージは Ubuntu などの既存のオープンソースの Linux ディストリビューションに基づいています。Heroku のアプリケーションは特定のベースイメージを対象とし、アプリのソースコードをそのベースイメージと互換性がある実行可能パッケージに変換する役目を buildpack が担っています。
Cedar 世代のアプリ (クラシック buildpack) を使用) の場合、アプリのスタックの名前も Heroku ベースイメージと同じ名前になります。たとえば、heroku-24
などです。Fir 世代のアプリ (Cloud Native Buildpacks) を使用) の場合、アプリのスタックの名前は常に cnb
に設定され、ベースイメージは project.toml
から選択されます。たとえば、project.toml
で builder = heroku/builder:24
を指定すると、Heroku は heroku/heroku:24
スタックを使用します。
クラシック buildpack を使用するアプリにおけるスタックのサポートの詳細
スタックのバージョン | 基本テクノロジ | 提供開始 | サポート期限 | 互換性 | ステータス |
---|---|---|---|---|---|
Heroku-24 | Ubuntu 24.04 LTS | 2024 | 2029 年 4 月 | Cedar+Fir | デフォルトのスタック |
Heroku-22 | Ubuntu 22.04 LTS | 2022 年 | 2027 年 4 月 | Cedar | サポート対象 |
Heroku-20 | Ubuntu 20.04 LTS | 2020 年 | 2025 年 4 月 | Cedar | 非推奨 |
Heroku-18 | Ubuntu 18.04 LTS | 2018 年 | 2023 年 4 月 | Cedar | サポート終了 |
Heroku-16 | Ubuntu 16.04 LTS | 2017 年 | 2021 年 4 月 | Cedar | サポート終了 |
コンテナ | Docker | 2017 年 | 該当なし¹ | Cedar | 該当なし¹ |
¹: コンテナベースのアプリには、他の Heroku スタックイヤーのキュレートおよび維持されているオペレーティングシステムレイヤが含まれていません。デプロイするコンテナの基本レイヤを選択して維持する責任は、お客様側にあります。
Heroku の各スタックは、異なるオペレーティングシステムパッケージおよび言語ランタイムのバージョンをサポートしています。このサポートは通常、スタックが最初にリリースされた時点でそれぞれの保守担当主体によって活発に開発されていたソフトウェアに限定されています。
Heroku が正式サポートする buildpack は、サポート対象のすべてのスタックを扱います。サードパーティの buildpack では、すべてのスタックを扱うことが保証されていません。
Heroku スタックの Ubuntu パッケージには、各スタックで使用可能なパッケージが一覧表示されています。
スタック更新ポリシーには、Heroku が既存のスタックをいつどのように更新または破棄するか、および新しいスタックを導入するスケジュールが記載されています。
デフォルトスタック
Cedar アプリのデフォルトスタック
クラシック buildpack を使用する、新しく作成されたすべての Cedar 世代の Heroku アプリでは、デフォルトのスタックとベースイメージは heroku-24
になります。
Fir アプリにおけるデフォルトスタックとスタックのサポート
Fir アプリのスタックはすべて cnb
(Cloud Native Buildpacks)の略) です。Fir のデフォルトのベースイメージは heroku/heroku:24
です。Fir では古いベースイメージはサポートされません。将来、heroku/heroku:26
などの新しいベースイメージが利用可能になったときに、Fir アプリで使用されているベースイメージを project.toml
からアップグレードできます。
アプリのスタック名を確認する
アプリが使用中のスタックは、heroku stack
CLI コマンドで確認できます。Cedar 世代のアプリの場合、次のオプションがあります。
$ heroku stack
=== ⬢ example-app Available Stacks
container
heroku-20
heroku-22
* heroku-24
上記の例で、heroku-24
スタックはアクティブで、一覧表示されているその他のスタックは代替として選択可能です。
CNB を使用するすべてのアプリのスタック値は cnb
に設定されており、他にサポートされているスタック値はありません。
別のスタックへの移行
heroku stack:set
を使用すると、Cedar 世代のアプリが次回のデプロイで使用するスタックを変更できます。
$ heroku stack:set heroku-22
アプリを別のスタックに移行する場合、コードの変更が必要になることがあります。アプリのスタックのアップグレードに関する詳細な手順については、「最新スタックへのアップグレード」の手順を参照してください。
Fir アプリのスタックを cnb
から変更することはできません。将来、heroku/heroku:26
などの新しいベースイメージが利用可能になったときに、Fir アプリのベースイメージを更新できます。