次の方法で共有


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

BasicStandard、および 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 をカスタマイズすることもできます。

カスタマイズ

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

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