Compilación de variables de entorno para Java en Azure Container Apps

Azure Container Apps usa Buildpacks para crear automáticamente una imagen de contenedor que le permite implementar desde el código fuente directamente en la nube. Para controlar la configuración de compilación, puede usar variables de entorno para personalizar partes de la compilación como JDK, Maven y Tomcat. En el siguiente artículo se muestra cómo configurar variables de entorno para ayudarle a tomar el control de las compilaciones que crean automáticamente un contenedor.

Variables de entorno de compilación Java admitidas

Configuración de JDK

Container Apps usa Microsoft Build de OpenJDK para compilar código fuente y como entorno de runtime. Se admiten cuatro versiones JDK de LTS: 8, 11, 17 y 21.

  • Para la compilación de código fuente, la versión predeterminada es JDK 17.

  • Para una compilación de archivo JAR, la versión de JDK se lee desde la ubicación del archivo META-INF\MANIFEST.MF en el archivo JAR, pero usa la versión predeterminada JDK 17 si la versión especificada no está disponible.

Esta es una lista de las variables de entorno que se usan para configurar JDK:

Variable de entorno Descripción Valor predeterminado
BP_JVM_VERSION Controla la versión de JVM. 17

Configuración de Maven

Container Apps admite la creación de aplicaciones basadas en Maven desde el origen.

Esta es una lista de las variables de entorno que se usan para configurar Maven:

Compilar variable de entorno Descripción Valor predeterminado
BP_MAVEN_VERSION Establece la versión principal de Maven. Dado que Buildpacks solo incluye una sola versión de cada línea compatible, las actualizaciones del paquete de compilación pueden cambiar la versión exacta de Maven instalada. Si necesita una versión secundaria o de revisión específica de Maven, use el contenedor de Maven en su lugar. 3
BP_MAVEN_BUILD_ARGUMENTS Define los argumentos pasados a Maven. --batch-mode se antepone a la lista de argumentos en entornos sin TTY. -Dmaven.test.skip=true --no-transfer-progress package
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS Define argumentos adicionales usados (por ejemplo, -DskipJavadoc anexado a BP_MAVEN_BUILD_ARGUMENTS) para pasar a Maven.
BP_MAVEN_ACTIVE_PROFILES Lista separada por comas de perfiles activos pasados a Maven.
BP_MAVEN_BUILT_MODULE Designa el artefacto de aplicación que contiene el módulo. De manera predeterminada, la compilación busca en el módulo raíz.
BP_MAVEN_BUILT_ARTIFACT Ubicación del artefacto de aplicación compilado. Este valor reemplaza a la variable BP_MAVEN_BUILT_MODULE. Puede coincidir con un único archivo, varios archivos o un directorio a través de uno o varios patrones separados por espacios. target/*.[ejw]ar
BP_MAVEN_POM_FILE Especifica una ubicación personalizada en el archivo pom.xml del proyecto. Este valor es relativo a la raíz del proyecto (por ejemplo, /workspace). pom.xml
BP_MAVEN_DAEMON_ENABLED Desencadena la instalación y configuración de maven-mvnd de Apache en lugar de Maven. Establezca este valor en true si desea el demonio de Maven. false
BP_MAVEN_SETTINGS_PATH Especifica una ubicación personalizada en el archivo settings.xml de Maven.
BP_INCLUDE_FILES Lista separada por dos puntos de patrones globales para buscar coincidencias con los archivos de origen. Cualquier archivo coincidente se conserva en la imagen final.
BP_EXCLUDE_FILES Lista separada por dos puntos de patrones globales para buscar coincidencias con los archivos de origen. Cualquier archivo coincidente se quita de la imagen final. Los patrones de inclusión se aplican primero y puede usar "excluir patrones" para reducir los archivos incluidos en la compilación.
BP_JAVA_INSTALL_NODE Controle si un paquete de compilación independiente instala Yarn y Node.js. Si se establece en true, el paquete de compilación comprueba la raíz de la aplicación o la ruta de acceso establecida por BP_NODE_PROJECT_PATH. La ruta de acceso del proyecto busca un archivo yarn.lock, que requiere la instalación de Yarn y Node.js. Si hay un archivo package.json, la compilación solo requiere Node.js. false
BP_NODE_PROJECT_PATH Dirija el subdirectorio del proyecto para buscar archivos package.json y yarn.lock.

Configuración de Tomcat

Container Apps admite la ejecución de archivos war en el servidor de aplicaciones de Tomcat.

Esta es una lista de las variables de entorno que se usan para configurar Tomcat:

Compilar variable de entorno Descripción Valor predeterminado
BP_TOMCAT_CONTEXT_PATH Ruta de acceso de contexto donde se monta la aplicación. El valor predeterminado es vacío (ROOT)
BP_TOMCAT_EXT_CONF_SHA256 Hash SHA256 del paquete de configuración externo.
BP_TOMCAT_ENV_PROPERTY_SOURCE_DISABLED Cuando se establece en true, el paquete de compilación no configura org.apache.tomcat.util.digester.EnvironmentPropertySource. Esta opción de configuración se agrega para admitir la carga de la configuración desde las variables de entorno y hacer referencia a ellas en los archivos de configuración de Tomcat.
BP_TOMCAT_EXT_CONF_STRIP Número de niveles de directorio que se van a quitar del paquete de configuración externo. 0
BP_TOMCAT_EXT_CONF_URI Identificador URI de descarga del paquete de configuración externo.
BP_TOMCAT_EXT_CONF_VERSION Versión del paquete de configuración externo.
BP_TOMCAT_VERSION Se usa para configurar una versión específica de Tomcat. Las versiones compatibles de Tomcat incluyen 8, 9 y 10. 9.*

Configuración del servicio de compilación en la nube

Esta es una lista de las variables de entorno que se usan para configurar un servicio de compilación en la nube:

Compilar variable de entorno Descripción Valor predeterminado
ORYX_DISABLE_TELEMETRY Controla si se va a deshabilitar la recopilación de telemetría. false

Configuración de variables de entorno de compilación de Java

Puede configurar variables de entorno de compilación de Java al implementar el código fuente de la aplicación Java mediante el comando de la CLI az containerapp up, az containerapp create o az containerapp update:

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>

El argumento build-env-vars es una lista de variables de entorno para los valores separados por espacios de compilación en formato key=value. Esta es una lista de ejemplo que puede pasar como variables:

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

También puede configurar las variables de entorno de compilación de Java al configurar Acciones de GitHub con la CLI de Azure en Azure Container Apps.

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>

Pasos siguientes