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