app.json のスキーマ
最終更新日 2024年01月24日(水)
Table of Contents
app.json
は、Web アプリを記述するためのマニフェスト形式です。Heroku でアプリを実行するために必要な環境変数、アドオン、その他の情報を宣言します。このドキュメントでは、スキーマについて詳しく説明します。
app.json
を使用して Heroku でアプリをセットアップする方法についての詳細は、「Setting Up Apps using the Platform API」(Platform API を使用してアプリを設定する) を参照してください。
app.json の例
{
"name": "Small Sharp Tool",
"description": "This app does one little thing, and does it well.",
"keywords": [
"productivity",
"HTML5",
"scalpel"
],
"website": "https://small-sharp-tool.com/",
"repository": "https://github.com/jane-doe/small-sharp-tool",
"logo": "https://small-sharp-tool.com/logo.svg",
"success_url": "/welcome",
"scripts": {
"postdeploy": "bundle exec rake bootstrap"
},
"env": {
"SECRET_TOKEN": {
"description": "A secret key for verifying the integrity of signed cookies.",
"generator": "secret"
},
"WEB_CONCURRENCY": {
"description": "The number of processes to run.",
"value": "5"
}
},
"formation": {
"web": {
"quantity": 1,
"size": "standard-1x"
}
},
"image": "heroku/ruby",
"addons": [
"openredis",
{
"plan": "mongolab:shared-single-small",
"as": "MONGO"
},
{
"plan": "heroku-postgresql",
"options": {
"version": "9.5"
}
}
],
"buildpacks": [
{
"url": "https://github.com/stomita/heroku-buildpack-phantomjs"
}
],
"environments": {
"test": {
"scripts": {
"test": "bundle exec rake test"
}
}
}
}
app.json スキーマリファレンス
addons
(配列、任意) デプロイする前にアプリにプロビジョニングする Heroku アドオンを指定する文字列またはオブジェクトの配列。
アドオンプランがオブジェクトとして指定される場合、以下のプロパティでアドオンを設定します。
plan
: (文字列、必須) プロビジョニングするアドオンとプラン。この文字列はaddon:plan
またはaddon
の形式である必要があります。プランを省略した場合、そのアドオンのデフォルトプランがプロビジョニングされます。as
: (文字列、任意) 新しいアドオンのアタッチ名。アタッチ名を省略した場合、アドオンはそのデフォルト名を使用してアタッチされます。options
: (オブジェクト、任意) アドオンに固有のオプション (例: Heroku PostgreSQL) でプロビジョニングするデータベースのバージョン)。キーは、アドオンのドキュメントで定義されているオプション名に対応します。値はアドオンオプションの値に対応し、文字列である必要があります。値を取らないオプションについては、値true
を使用します。
アドオンが文字列として指定される場合、文字列は addon:plan
または addon
の形式である必要があります。アドオンは、そのデフォルトのアタッチ名とオプションを使用してプロビジョニングされます。オブジェクト形式が推奨されます。
レビューアプリや CI アプリなどの一時的なアプリでは、プランが指定されている場合、プランを上書きします。それらのアプリでは、アドオンプロバイダーによって指定された一時的なデフォルトを代わりに使用します。Heroku ではこのモデルの進化に取り組んでいますが、これは当面の間、より適切なデフォルトプランを提供してプロバイダーの労力を軽減するために役立ちます。
{
"addons": [
"openredis",
{
"plan": "mongolab:shared-single-small",
"as": "MONGO"
},
{
"plan": "heroku-postgresql",
"options": {
"version": "9.5"
}
}
]
}
buildpacks
(配列、任意) アプリをビルドするために必要な buildpack を指定するオブジェクトの配列。buildpack のダウンロードまたは複製元の url
フィールドが、個々の buildpack
オブジェクトに含まれている必要があります。リストの最後の buildpack は、アプリケーションのプロセスタイプを決定するために使用されます。
公式でサポートされている buildpack の短縮名も URL として使用できます。
{
"buildpacks": [
{
"url": "https://github.com/heroku/heroku-buildpack-pgbouncer"
},
{
"url": "heroku/ruby"
}
]
}
description
(文字列、任意) アプリの概要: アプリの機能、所有者、使用目的など。
{
"description": "This app does one little thing, and does it well."
}
env
(オブジェクト、任意) アプリのランタイム環境に追加する環境設定の Key-Value オブジェクト。キーは、環境設定の名前です。値は、文字列またはオブジェクトです。値が文字列の場合、その値が使用されます。値がオブジェクトの場合、その変数の特定の要件を定義します。
description
: 値の目的と適切な値の決定方法についてのユーザーが理解できる説明value
: 使用するデフォルト値。これは常に文字列である必要があります。required
: 指定された値がアプリの動作に必要かどうかを示すブール値 (デフォルト: true
)。generator
: 値を生成するために呼び出す関数を表す文字列。現在サポートされている唯一の生成元は、疑似ランダム文字列を生成するsecret
です。
{
"env": {
"SECRET_TOKEN": {
"description": "A secret key for verifying the integrity of signed cookies.",
"generator": "secret"
},
"WEB_CONCURRENCY": {
"description": "The number of processes to run.",
"value": "5"
}
}
}
environments
(オブジェクト、任意) app.json のキーの環境固有の上書きを保持する Key-Value オブジェクト。
オブジェクト内の各キーは、環境の名前です。以下の環境名はプラットフォームによって認識されます。
test
: Heroku CI によって作成された継続的インテグレーション環境に適用されます。review
: Heroku Review Apps によって作成された Review Apps 環境に適用されます。
environments
オブジェクトでは、test
および review
のみが許可された環境名です。
CI の概要については、Heroku CI のドキュメントを参照してください。
environments
オブジェクト内の各値は、有効な app.json
キーを保持するオブジェクトです。プラットフォームで app.json
がアプリに適用されると、当該の環境で定義されているキーの値によって、ベースマニフェストで定義されている値が完全に置き換えられます。たとえば、次のマニフェストがあるとします。
{
"env": {
"SECRET_TOKEN": {
"description": "A secret key for verifying the integrity of signed cookies.",
"generator": "secret"
},
"WEB_CONCURRENCY": "5"
},
"environments": {
"test": {
"env": {
"SECRET_TOKEN": "test-secret"
}
}
}
}
ベースマニフェストを使用して作成されたアプリには SECRET_TOKEN
環境設定 (生成された値を含む) と WEB_CONCURRENCY
環境設定 (値は 5
) の両方がありますが、test
環境を使用して作成されたアプリには SECRET_TOKEN
環境設定 (固定値) のみがあります。WEB_CONCURRENCY
環境設定は test
環境では設定されません。
formation
(オブジェクト、任意) プロセスタイプ設定の Key-Value オブジェクト。キーは、プロセスタイプの名前です。値は、フォーメーションリソースなどのオブジェクトです。
quantity
: 維持するプロセスの数size
: このリストに準じた dyno サイズ
リクエストされたフォーメーションに応じて、使用された dyno の料金が請求されます。
サイズが指定されていない場合、アプリはデフォルトの dyno サイズを使用します。複数のプロセスがある場合は、dyno タイプの混在を避けるために、formation
キーを使用して dyno サイズを明示的に設定することを強くお勧めします。
{
"formation": {
"web": {
"quantity": 1,
"size": "basic"
}
}
}
image
(文字列、任意) アプリのビルドに使用できる Docker イメージ。このキーは、ローカル Docker コンテナをプロビジョニングするために Heroku-Docker によって使用されます。
{
"image": "heroku/nodejs"
}
メンテナンスされている公式の Docker イメージは Heroku の Docker Hub にあります。
このキーは非推奨です。
keywords
(配列、任意) アプリについて説明する文字列の配列。
{
"keywords": [
"productivity",
"HTML5",
"scalpel"
]
}
logo (URL)
(文字列、任意) アプリケーションのロゴ画像の URL。寸法は正方形である必要があります。形式は SVG、PNG、または JPG です。
{
"logo": "https://small-sharp-tool.com/logo.svg"
}
name
(文字列、任意) テンプレートを特定するための明快で単純な名前 (最大 30 文字)。
{
"name": "Small Sharp Tool"
}
repository
(文字列、任意) アプリケーションのソースコードの場所 (Git URL、GitHub URL、Subversion URL、Mercurial URL など)。
{
"repository": "https://github.com/jane-doe/small-sharp-tool"
}
scripts
(オブジェクト、任意) ビルド/リリースプロセスのさまざまな段階で実行するスクリプトまたはシェルコマンドを指定する Key-Value オブジェクト。
postdeploy
: (文字列またはオブジェクト、任意) アプリが作成された後に 1 回限りの設定タスクを実行するスクリプトまたはシェルコマンド。この値は、文字列またはオブジェクトです。値がオブジェクトである場合は、次のプロパティが受け付けられます。command
: (文字列、必須) 実行するスクリプトまたはシェルコマンド。size
: (文字列、任意) このコマンドが実行される dyno のサイズ。有効なサイズはここで見つけることができます。
postdeploy
スクリプトは、アプリが作成された後に一度実行され、その後のアプリへのデプロイ時には実行されません。
{
"scripts": {
"postdeploy": "bundle exec rake bootstrap",
}
}
pr-predestroy
: (文字列またはオブジェクト、任意) レビューアプリが破棄された後にクリーンアップタスクを実行するスクリプトまたはシェルコマンド。この値は、文字列またはオブジェクトです。値がオブジェクトである場合は、次のプロパティが受け付けられます。command
: (文字列、必須) 実行するスクリプトまたはシェルコマンド。size
: (文字列、任意) このコマンドが実行される dyno のサイズ。有効なサイズはここで見つけることができます。
pr-predestroy
スクリプトは、関連付けられたプルリクエストをマージまたは閉じることによってレビューアプリが破棄されたときに実行されます。
{
"scripts": {
"pr-predestroy": "bundle exec rake cleanup",
}
}
リクエストされたフォーメーションに応じて、使用された dyno の料金が請求されます。
stack
(文字列、任意) アプリが実行される Heroku スタック。これが指定されない場合、デフォルトのスタックが使用されます。
{
"stack": "heroku-20"
}
success_url
(文字列、任意) ユーザーの新しいアプリがデプロイされたときにユーザーをリダイレクトする場所を指定する URL。値が完全修飾 URL の場合、ユーザーはその URL にリダイレクトされます。値がスラッシュ /
で始まる場合、ユーザーは新しくデプロイされたアプリ内のそのパスにリダイレクトされます。
{
"success_url": "/welcome"
}
website
(文字列、任意) プロジェクトの Web サイト。
{
"website": "https://small-sharp-tool.com/"
}