Azure Container Apps で Java 用の環境変数を構築する

Azure Container Apps は、Buildpack を使って、ソース コードからクラウドに直接デプロイできるコンテナー イメージを自動的に作成します。 ビルド構成を制御するには、環境変数を使って、JDK、Maven、Tomcat などのビルドの一部をカスタマイズします。 次の記事では、コンテナーを自動的に作成するビルドを制御できるように環境変数を構成する方法を示します。

サポートされている Java ビルド環境変数

JDK を構成する

Container Apps は、ソース コードをビルドするために、またランタイム環境として、OpenJDK の Microsoft Build を使います。 4 つの LTS JDK バージョン (8、11、17、21) がサポートされています。

  • ソース コード ビルドの場合、既定のバージョンは JDK 17 です。

  • JAR ファイルのビルドの場合、JDK のバージョンは JAR 内のファイルの場所 META-INF\MANIFEST.MF から読み取られますが、指定されたバージョンを使用できない場合は、既定の JDK バージョン 17 が使われます。

JDK の構成に使われる環境変数の一覧を次に示します。

環境変数 説明 Default
BP_JVM_VERSION JVM のバージョンを制御します。 17

Maven の構成

Container Apps は、ソースからの Maven ベースのアプリケーションのビルドをサポートします。

Maven の構成に使われる環境変数の一覧を次に示します。

ビルド環境変数 説明 Default
BP_MAVEN_VERSION Maven のメジャー バージョンを設定します。 Buildpack は、サポートされている各行の 1 つのバージョンのみをリリースするため、buildpack を更新すると、インストールされている Maven の正確なバージョンが変更される可能性があります。 Maven の特定のマイナーまたはパッチ バージョンが必要な場合は、代わりに Maven ラッパーを使います。 3
BP_MAVEN_BUILD_ARGUMENTS Maven に渡される引数を定義します。 TTY のない環境では、引数一覧の先頭に --batch-mode が追加されます。 -Dmaven.test.skip=true --no-transfer-progress package
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS Maven に渡すために使われる追加の引数 (たとえば、BP_MAVEN_BUILD_ARGUMENTS に追加される -DskipJavadoc) を定義します。
BP_MAVEN_ACTIVE_PROFILES Maven に渡されるアクティブなプロファイルのコンマ区切りの一覧。
BP_MAVEN_BUILT_MODULE モジュールを含むアプリケーション成果物を指定します。 既定では、ビルドはルート モジュール内で検索されます。
BP_MAVEN_BUILT_ARTIFACT ビルドされたアプリケーション成果物の場所。 この値は BP_MAVEN_BUILT_MODULE 変数よりも優先されます。 1 つ以上のスペースで区切られたパターンを使って、1 つのファイル、複数のファイル、またはディレクトリを照合できます。 target/*.[ejw]ar
BP_MAVEN_POM_FILE プロジェクトの pom.xml ファイルにカスタムの場所を指定します。 この値はプロジェクトのルートに対する相対値です (たとえば、/workspace)。 pom.xml
BP_MAVEN_DAEMON_ENABLED Maven ではなく Apache maven-mvnd のインストールと構成をトリガーします。 Maven デーモンを使う場合は、この値を true に設定します。 false
BP_MAVEN_SETTINGS_PATH Maven の settings.xml ファイルにカスタムの場所を指定します。
BP_INCLUDE_FILES ソース ファイルと一致する glob パターンのコロン区切りの一覧。 一致したファイルはすべて最終イメージに保持されます。
BP_EXCLUDE_FILES ソース ファイルと一致する glob パターンのコロン区切りの一覧。 一致したファイルはすべて最終イメージから削除されます。 含めるパターンが最初に適用されます。また、"除外パターン" を使って、ビルドに含まれるファイルを減らすことができます。
BP_JAVA_INSTALL_NODE 別の Buildpack で Yarn と Node.js をインストールするかどうかを制御します。 true に設定すると、Buildpack はアプリのルートまたは BP_NODE_PROJECT_PATH によって設定されたパスを確認します。 プロジェクト パスは yarn.lock ファイルを探します。これには Yarn と Node.js のインストールが必要です。 package.json ファイルがある場合、ビルドには Node.js のみが必要です。 false
BP_NODE_PROJECT_PATH package.jsonyarn.lock ファイルを探すようにプロジェクト サブディレクトリに指示します。

Tomcat を構成する

Container Apps は、Tomcat アプリケーション サーバーでの war ファイルの実行をサポートします。

Tomcat の構成に使われる環境変数の一覧を次に示します。

ビルド環境変数 説明 Default
BP_TOMCAT_CONTEXT_PATH アプリケーションがマウントされているコンテキスト パス。 既定値は空です (ROOT)
BP_TOMCAT_EXT_CONF_SHA256 外部構成パッケージの SHA256 ハッシュ。
BP_TOMCAT_ENV_PROPERTY_SOURCE_DISABLED true に設定すると、Buildpack は org.apache.tomcat.util.digester.EnvironmentPropertySource を構成しません。 この構成オプションは、環境変数からの構成の読み込みと Tomcat 構成ファイル内の参照をサポートするために追加されました。
BP_TOMCAT_EXT_CONF_STRIP 外部構成パッケージから削除するディレクトリ レベルの数。 0
BP_TOMCAT_EXT_CONF_URI 外部構成パッケージのダウンロード URI。
BP_TOMCAT_EXT_CONF_VERSION 外部構成パッケージのバージョン。
BP_TOMCAT_VERSION 特定の Tomcat バージョンを構成するために使われます。 サポートされている Tomcat バージョンには、8、9、10 があります。 9.*

Cloud Build Service を構成する

Cloud Build Service の構成に使われる環境変数の一覧を次に示します。

ビルド環境変数 説明 Default
ORYX_DISABLE_TELEMETRY テレメトリ収集を無効にするかどうかを制御します。 false

Java ビルド環境変数を構成する方法

CLI コマンド az containerapp upaz containerapp create、または az containerapp update を使って Java アプリケーションのソース コードをデプロイするときに、Java ビルド環境変数を構成できます。

az containerapp up \
  --name <CONTAINER_APP_NAME> \
  --source <SOURCE_DIRECTORY> \
  --build-env-vars <NAME=VALUE NAME=VALUE> \
  --resource-group <RESOURCE_GROUP_NAME> \
  --environment <ENVIRONMENT_NAME>

build-env-vars 引数は、ビルドの環境変数の一覧であり、key=value 形式のスペース区切りの値です。 変数として渡すことができる一覧の例を次に示します。

BP_JVM_VERSION=21 BP_MAVEN_VERSION=4 "BP_MAVEN_BUILD_ARGUMENTS=-Dmaven.test.skip=true --no-transfer-progress package"

また、Azure Container Apps で Azure CLI を使って GitHub Actions を設定するときに、Java ビルド環境変数を構成することもできます。

az containerapp github-action add \
  --repo-url "https://github.com/<OWNER>/<REPOSITORY_NAME>" \
  --build-env-vars <NAME=VALUE NAME=VALUE> \
  --branch <BRANCH_NAME> \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --registry-url <URL_TO_CONTAINER_REGISTRY> \
  --registry-username <REGISTRY_USER_NAME> \
  --registry-password <REGISTRY_PASSWORD> \
  --service-principal-client-id <appId> \
  --service-principal-client-secret <password> \
  --service-principal-tenant-id <tenant> \
  --token <YOUR_GITHUB_PERSONAL_ACCESS_TOKEN>

次のステップ