在 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.json 和 yarn.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 命令,请使用容器应用扩展版本 0.3.47
或更高版本。 使用 az extension add --name containerapp --upgrade --allow-preview
命令安装最新版本。
可以通过 CLI 命令 az containerapp up
、az 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 容器应用中使用 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>