注
Basic、Standard、および Enterprise プランは、2025 年 3 月 17 日に廃止期間に入りました。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金プランと専用プランは、2024 年 9 月 30 日に廃止期間に入り、2025 年 3 月末までに完全にシャットダウンされました。 詳細については、「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 を参照してください。 ビルド イメージ、実行イメージ、スタックを理解するには、「基本イメージとは」を参照してください。
注
この記事では以前、廃止される Paketo Java Azure Composite Buildpack の使用をお勧めします。 複合ビルドパックの必要な個々のコンポーネントを使用するように、この例を更新しました。 複合ビルドパックに含まれるすべての個々のコンポーネントの一覧については、 buildpack.toml を参照してください。 複合ビルドパックの廃止の詳細については、「 Paketo Buildpacks Sunsets Java Azure Composite Buildpack」を参照してください。
前提条件
Standard プラン
Azure Spring Apps Standard プランには組み込みのビルダーが付属しており、それはカスタマイズできません。 このビルダーを置き換えるには、独自のビルダー用の TOML ファイルを作成する必要があります。 次の TOML ファイルは、Application Insights を使用して Java Spring Boot アプリをビルドするようにカスタマイズできる例です。 アプリの要件に基づいて TOML ファイルを調整します。
# filename: standard-builder.toml
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/ca-certificates:3.9.0"
id = "paketo-buildpacks/ca-certificates"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/microsoft-openjdk:4.0.1"
id = "paketo-buildpacks/microsoft-openjdk"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/syft:2.6.1"
id = "paketo-buildpacks/syft"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/maven:6.19.2"
id = "paketo-buildpacks/maven"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/executable-jar:6.12.0"
id = "paketo-buildpacks/executable-jar"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/spring-boot:5.32.0"
id = "paketo-buildpacks/spring-boot"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/azure-application-insights:5.23.0"
id = "paketo-buildpacks/azure-application-insights"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/environment-variables:4.8.0"
id = "paketo-buildpacks/environment-variables"
[[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/ca-certificates"
optional = true
version = "3.9.0"
[[order.group]]
id = "paketo-buildpacks/microsoft-openjdk"
version = "4.0.1"
[[order.group]]
id = "paketo-buildpacks/syft"
optional = true
version = "2.6.1"
[[order.group]]
id = "paketo-buildpacks/maven"
optional = true
version = "6.19.2"
[[order.group]]
id = "paketo-buildpacks/executable-jar"
optional = true
version = "6.12.0"
[[order.group]]
id = "paketo-buildpacks/spring-boot"
optional = true
version = "5.32.0"
[[order.group]]
id = "paketo-buildpacks/azure-application-insights"
optional = true
version = "5.23.0"
[[order.group]]
id = "paketo-buildpacks/environment-variables"
optional = true
version = "4.8.0"
[[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/ドットネット・コア
- 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 プランでビルダーを置き換えるには、独自のビルダー用の TOML ファイルを作成する必要があります。 次の TOML ファイルは、カスタマイズできる例です。 この TOML ファイルを使用すると、ローカル コンピューターで同様のビルダーを作成できます。 アプリの要件に基づいて TOML ファイルを調整します。
# filename: enterprise-builder.toml
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/ca-certificates:3.9.0"
id = "paketo-buildpacks/ca-certificates"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/microsoft-openjdk:4.0.1"
id = "paketo-buildpacks/microsoft-openjdk"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/syft:2.6.1"
id = "paketo-buildpacks/syft"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/maven:6.19.2"
id = "paketo-buildpacks/maven"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/executable-jar:6.12.0"
id = "paketo-buildpacks/executable-jar"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/spring-boot:5.32.0"
id = "paketo-buildpacks/spring-boot"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/azure-application-insights:5.23.0"
id = "paketo-buildpacks/azure-application-insights"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/environment-variables:4.8.0"
id = "paketo-buildpacks/environment-variables"
[[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/ca-certificates"
optional = true
version = "3.9.0"
[[order.group]]
id = "paketo-buildpacks/microsoft-openjdk"
version = "4.0.1"
[[order.group]]
id = "paketo-buildpacks/syft"
optional = true
version = "2.6.1"
[[order.group]]
id = "paketo-buildpacks/maven"
optional = true
version = "6.19.2"
[[order.group]]
id = "paketo-buildpacks/executable-jar"
optional = true
version = "6.12.0"
[[order.group]]
id = "paketo-buildpacks/spring-boot"
optional = true
version = "5.32.0"
[[order.group]]
id = "paketo-buildpacks/azure-application-insights"
optional = true
version = "5.23.0"
[[order.group]]
id = "paketo-buildpacks/environment-variables"
optional = true
version = "4.8.0"
[[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 をカスタマイズすることもできます。
カスタマイズ
ビルドパックでは、さまざまな構成をカスタマイズする方法が提供されます。 次の例は、特定の要件でコンテナー イメージをビルドするための一般的なシナリオを示したものです。
- Java ソース コード用の JDK のカスタマイズについては、paketo-buildpacks/microsoft-openjdk を参照してください。
- WAR 用の Tomcat のカスタマイズについては、paketo-buildpacks/apache-tomcat を参照してください。
- ビルド時と実行時にシステムの信頼ストアに CA 証明書を追加するには、paketo-buildpacks/ca-certificates を参照してください。
プロパティと構成について詳しくは、「Paketo Buildpacks を使用して Java アプリをビルドする方法」と「Java Buildpack リファレンス」を参照してください。