你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 容器应用中为 Java 生成环境变量

Azure 容器应用使用 Buildpacks 自动创建容器映像,以便直接从你的源代码部署到云。 若要控制你的生成配置,可以使用环境变量来自定义生成的各个部分,例如 JDK、Maven 和 Tomcat。 以下文章介绍如何配置环境变量,以帮助控制自动为你创建容器的生成。

支持 Java 生成环境变量

配置 JDK

容器应用使用 Microsoft Build of OpenJDK 来生成源代码,并将其作为运行时环境。 支持四个 LTS JDK 版本:8、11、17 和 21。

  • 对于源代码生成,默认版本为 JDK 17。

  • 对于 JAR 文件生成,JDK 版本是从 JAR 中的文件位置 META-INF\MANIFEST.MF 读取的,但如果指定的版本不可用,则使用默认的 JDK 版本 17。

下面是用于配置 JDK 的环境变量的列表:

环境变量 说明 默认
BP_JVM_VERSION 控制 JVM 版本。 17

配置 Maven

容器应用支持从源生成基于 Maven 的应用程序。

下面是用于配置 Maven 的环境变量的列表:

生成环境变量 说明 默认
BP_MAVEN_VERSION 设置主要的 Maven 版本。 由于 Buildpack 只提供每个受支持行的单个版本,因此对 buildpack 的更新可能会更改安装的 Maven 的确切版本。 如果需要 Maven 的特定次要/补丁版本,请改用 Maven 包装器。 3
BP_MAVEN_BUILD_ARGUMENTS 定义传递给 Maven 的参数。 --batch-mode 被预置到没有 TTY 的环境中的参数列表。 -Dmaven.test.skip=true --no-transfer-progress package
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS 定义用于传递给 Maven 的额外参数(例如 -DskipJavadoc 被追加到 BP_MAVEN_BUILD_ARGUMENTS)。
BP_MAVEN_ACTIVE_PROFILES 传递给 Maven 的活动配置文件的逗号分隔列表。
BP_MAVEN_BUILT_MODULE 指定包含模块的应用程序工件。 默认情况下,生成会在根模块中查找。
BP_MAVEN_BUILT_ARTIFACT 生成的应用程序工件的位置。 此值取代 BP_MAVEN_BUILT_MODULE 变量。 可以通过一个或多个空格分隔模式匹配单个文件、多个文件或目录。 target/*.[ejw]ar
BP_MAVEN_POM_FILE 指定项目的 pom.xml 文件的自定义位置。 此值相对于项目的根目录(例如 /workspace)。 pom.xml
BP_MAVEN_DAEMON_ENABLED 触发 Apache maven-mvnd 的安装和配置,而不是 Maven。 如果要使用 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

容器应用支持在 Tomcat 应用程序服务器中运行 war 文件。

下面是用于配置 Tomcat 的环境变量的列表:

生成环境变量 说明 默认
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.*

配置云生成服务

下面是用于配置云生成服务的环境变量的列表:

生成环境变量 说明 默认
ORYX_DISABLE_TELEMETRY 控制是否禁用遥测收集。 false

如何配置 Java 生成环境变量

可以通过 CLI 命令 az containerapp upaz containerapp createaz 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 容器应用中使用 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>

后续步骤