次の方法で共有


Paketo Buildpacks を使用してアプリケーションをコンテナー化する

Note

BasicStandardEnterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。

Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。

この記事の適用対象:✅ Basic/Standard ✅ Enterprise

この記事では、Paketo Buildpacks を使ってコンテナー イメージをビルドする方法について説明します。

Azure Spring Apps サービスでは、Dockerfile を使わずにソース コードからイメージをビルドできます。 その対象は Java アプリケーションだけでなく、他のプログラミング言語や静的な Web コンテンツにまで及びます。 Standard プランのサービスではオープンソースの Paketo Buildpacks を使いますが、Enterprise プランでは VMware Tanzu Buildpacks を使います。 Tanzu Buildpacks を利用できない場合、または Paketo を使うためのオンライン サービスがない場合は、ローカル環境の Paketo Buildpacks に切り替えてイメージをビルドできます。 その後、それらを Azure Container Registry または他の Docker レジストリにデプロイします。

この記事では、TOML ファイルを使ってビルダーを作成してから、そのビルダーを使ってソース コードまたは成果物ファイルをビルドする方法を見ていきます。 詳細については、builder.toml を参照してください。 ビルド イメージ、実行イメージ、スタックを理解するには、「基本イメージとは」を参照してください。

前提条件

Standard プラン

Azure Spring Apps Standard プランには組み込みのビルダーが付属しており、それはカスタマイズできません。 Standard プランをお使いの場合は、次の内容で standard-builder.toml という TOML ファイルを作成する必要があります。 このファイルを使うと、Azure Spring Apps Standard プランで利用できるものと同等のビルダーを作成できます。

# filename: standard-builder.toml

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-azure:12.0.0"
id = "paketo-buildpacks/java-azure"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-native-image:9.8.0"
id = "paketo-buildpacks/java-native-image"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/dotnet-core:0.48.3"
id = "paketo-buildpacks/dotnet-core"

[[order]]
[[order.group]]
id = "paketo-buildpacks/java-azure"

[[order]]
[[order.group]]
id = "paketo-buildpacks/java-native-image"

[[order]]
[[order.group]]
id = "paketo-buildpacks/dotnet-core"

[build]
image = "paketobuildpacks/build-jammy-base:0.1.129"

[run]
[[run.images]]
image = "paketobuildpacks/run-jammy-base:0.1.129"

この TOML ファイルでビルダーを作成するには、次のコマンドを使います。

pack builder create <builder-name> --config ./standard-builder.toml

次のコマンドを使って、ビルダーを検査できます。

pack builder inspect <builder-name>

このビルダーを使って Java ソース コードまたは .NET ソース コードをビルドしてコンテナー イメージにするには、次のコマンドを使います。

pack build <image-name> \
    --path <path-to-source-root> \
    --builder <builder-name>

ビルダーを使って JAR や WAR ファイルなどの成果物をビルドしてコンテナー イメージにするには、次のコマンドを使います。

pack build <image-name> \
    --path <path-to-artifact> \
    --builder <builder-name>

Enterprise プラン

Azure Spring Apps Enterprise プランでソース コードをビルドしてコンテナー イメージにするには、VMware Tanzu Buildpacks を使います。 Tanzu Buildpacks は、オープンソースの Paketo Buildpacks を基にして構築されています。 そのため、Tanzu のものとまったく同等の Paketo ビルドパックを見つけることはおそらく不可能です。

このセクションでは、Enterprise プランのものと似ていますがまったく同じではない Paketo Buildpacks を使ってビルダーを作成する方法について説明します。 テストを実行するか、ビルドパックを調べて、Enterprise プランとローカル コンピューター上の独自のビルダーのビルドの互換性を確認するのは、お客様の側で行っていただく必要があります。

Enterprise プランに付属する既定のビルダーは、次のコンポーネントで構成されています。

  • OS スタック: io.buildpacks.stacks.jammy-base
  • Buildpacks:
    • tanzu-buildpacks/java-azure
    • tanzu-buildpacks/dotnet-core
    • tanzu-buildpacks/go
    • tanzu-buildpacks/web-servers
    • tanzu-buildpacks/nodejs
    • tanzu-buildpacks/python

パック CLI を使うと、ローカル コンピューター上の Paketo OS スタックと Paketo Buildpacks を使って同様のビルダーを作成できます。 その後、この新しく作成されたビルダーを使って、アプリケーションのソース コードをビルドできます。

既定のもの以外のビルダーをお使いの場合は、その構成 (OS スタックとビルドパック) を調べてから、それに似た Paketo ビルダーを作成する必要があります。 ビルダーの構成を調べるには、Azure portal に移動し、お使いの Azure Spring Apps インスタンスを見つけてから、[ビルド サービス] ペインを表示します。 ビルダーを見つけて、[ビルダーの編集] を選びます。 別の方法として、Azure CLI のaz spring build-service builder show コマンドを使うこともできます。

次の表は、Enterprise プランで使われる OS スタックと同等の Paketo OS スタックを示したものです。

Enterprise プランの OS スタック Paketo の OS スタック
io.buildpacks.stacks.jammy-base paketobuildpacks/jammy-base-stack
ビルド: paketobuildpacks/build-jammy-base
paketobuildpacks/run-jammy-base を実行します。
io.buildpacks.stacks.jammy-full paketobuildpacks/jammy-full-stack
ビルド: paketobuildpacks/build-jammy-full
paketobuildpacks/run-jammy-full を実行します。
io.buildpacks.stacks.jammy-tiny paketobuildpacks/jammy-tiny-stack
ビルド: paketobuildpacks/build-jammy-tiny
paketobuildpacks/run-jammy-tiny を実行します。
io.buildpacks.stacks.bionic-base (End of support) paketobuildpacks/bionic-base-stack
ビルド: paketobuildpacks/build-bionic-base
paketobuildpacks/run-bionic-base を実行します。
io.buildpacks.stacks.bionic-full (End of support) paketobuildpacks/bionic-full-stack
ビルド: paketobuildpacks/build-bionic-full
paketobuildpacks/run-bionic-full を実行します。

次の表は、Enterprise プランで使われるビルドパックと同等の Paketo Buildpack を示したものです。

Enterprise プランのビルドパック Paketo の Buildpack
tanzu-buildpacks/dotnet-core paketo-buildpacks/dotnet-core
tanzu-buildpacks/go paketo-buildpacks/go
tanzu-buildpacks/java-azure paketo-buildpacks/java-azure
tanzu-buildpacks/java-native-image paketo-buildpacks/java-native-image
tanzu-buildpacks/nodejs paketo-buildpacks/nodejs
tanzu-buildpacks/php paketo-buildpacks/php
tanzu-buildpacks/python paketo-buildpacks/python
tanzu-buildpacks/web-servers paketo-buildpacks/web-servers

例として、Enterprise プランの既定のビルダーを使います。 enterprise-builder.toml という名前の次の TOML ファイルを使うと、ローカル コンピューターで同様のビルダーを作成できます。

# filename: enterprise-builder.toml

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-azure:latest"
id = "paketo-buildpacks/java-azure"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/dotnet-core:latest"
id = "paketo-buildpacks/dotnet-core"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/go:latest"
id = "paketo-buildpacks/go"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/web-servers:latest"
id = "paketo-buildpacks/web-servers"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/nodejs:latest"
id = "paketo-buildpacks/nodejs"

[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/python:latest"
id = "paketo-buildpacks/python"

[[order]]
[[order.group]]
id = "paketo-buildpacks/java-azure"

[[order]]
[[order.group]]
id = "paketo-buildpacks/dotnet-core"

[[order]]
[[order.group]]
id = "paketo-buildpacks/go"

[[order]]
[[order.group]]
id = "paketo-buildpacks/web-servers"

[[order]]
[[order.group]]
id = "paketo-buildpacks/nodejs"

[[order]]
[[order.group]]
id = "paketo-buildpacks/python"

[build]
image = "paketobuildpacks/build-jammy-base:latest"

[run]
[[run.images]]
image = "paketobuildpacks/run-jammy-base:latest"

この TOML ファイルでビルドを作成するには、次のコマンドを使います。

pack builder create <builder-name> --config ./enterprise-builder.toml

次のコマンドを使って、ビルダーを検査できます。

pack builder inspect <builder-name>

これで、Azure Spring Apps Enterprise プランの既定のビルダーに似たビルダーができました。 このビルダーで次のコマンドを使うと、JAR ファイル、WAR ファイル、Java ソース コード、.NET ソース コード、Golang ソース コード、Node.js ソース コード、または Python ソース コードをビルドしてコンテナー イメージを作成できます。

pack build <image-name> \
    --path <path-to-source-root> \
    --builder <builder-name>

ビルダーを使って JAR や WAR ファイルなどの成果物をビルドしてコンテナー イメージにするには、次のコマンドを使います。

pack build <image-name> \
    --path <path-to-artifact> \
    --builder <builder-name>

また、ビルドパックを追加または削除してから、既存のビルダーを更新したり、それを使って新しいビルダーを作成したりして、enterprise-builder.toml をカスタマイズすることもできます。

カスタマイズ

ビルドパックでは、さまざまな構成をカスタマイズする方法が提供されます。 次の例は、特定の要件でコンテナー イメージをビルドするための一般的なシナリオを示したものです。

プロパティと構成について詳しくは、「Paketo Buildpacks を使用して Java アプリをビルドする方法」と「Java Buildpack リファレンス」を参照してください。