Variáveis de ambiente de build para Java nos Aplicativos de Contêiner do Azure

Os Aplicativos de Contêiner do Azure usam Buildpacks para criar automaticamente uma imagem de contêiner que permite implantar a partir do código-fonte diretamente na nuvem. Para assumir o controle da configuração do build, você pode usar variáveis de ambiente para personalizar partes do seu build, como o JDK, o Maven e o Tomcat. O artigo a seguir mostra como configurar variáveis de ambiente para ajudá-lo a assumir o controle sobre os builds que criam automaticamente um contêiner para você.

Variáveis de ambiente de build do Java com suporte

Configurar o JDK

Os Aplicativos de Contêiner usam o Microsoft Build do OpenJDK para criar o código-fonte e como ambiente de runtime. Há suporte para quatro versões do JDK LTS: 8, 11, 17 e 21.

  • Para o build de código-fonte, a versão padrão é o JDK 17.

  • Para um build de arquivo JAR, a versão do JDK é lida do local do arquivo META-INF\MANIFEST.MF no JAR, mas usa o JDK padrão versão 17 se a versão especificada não estiver disponível.

Aqui está uma listagem das variáveis de ambiente usadas para configurar o JDK:

Variável de ambiente Descrição Padrão
BP_JVM_VERSION Controla a versão da JVM. 17

Configurar Maven

Os Aplicativos de Contêiner dão suporte à criação de aplicativos baseados em Maven a partir da origem.

Aqui está uma listagem das variáveis de ambiente usadas para configurar o Maven:

Variável de ambiente de build Descrição Padrão
BP_MAVEN_VERSION Define a versão principal do Maven. Como os Buildpacks fornecem apenas uma única versão de cada linha com suporte, as atualizações no buildpack podem alterar a versão exata do Maven instalada. Se você precisar de uma versão secundária/patch específica do Maven, use o wrapper do Maven. 3
BP_MAVEN_BUILD_ARGUMENTS Define os argumentos passados para o Maven. O --batch-mode é anexado à lista de argumentos em ambientes sem um TTY. -Dmaven.test.skip=true --no-transfer-progress package
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS Define os argumentos extras usados (por exemplo, -DskipJavadoc acrescentado a BP_MAVEN_BUILD_ARGUMENTS) para passar para o Maven.
BP_MAVEN_ACTIVE_PROFILES Lista separada por vírgulas de perfis ativos passados para o Maven.
BP_MAVEN_BUILT_MODULE Designa o artefato do aplicativo que contém o módulo. Por padrão, o build é exibido no módulo raiz.
BP_MAVEN_BUILT_ARTIFACT Local do artefato do aplicativo criado. Esse valor substitui a variável BP_MAVEN_BUILT_MODULE. Você pode combinar um único arquivo, vários arquivos ou um diretório por meio de um ou mais padrões separados por espaço. target/*.[ejw]ar
BP_MAVEN_POM_FILE Especifica um local personalizado para o arquivo de pom.xmldo projeto. Esse valor é relativo à raiz do projeto (por exemplo, /workspace). pom.xml
BP_MAVEN_DAEMON_ENABLED Dispara a instalação e a configuração do Apache maven-mvnd em vez do Maven. Defina esse valor como true se você quiser o Daemon do Maven. false
BP_MAVEN_SETTINGS_PATH Especifica um local personalizado para o arquivo settings.xml do Maven.
BP_INCLUDE_FILES Lista separada por dois pontos de padrões glob para combinar os arquivos de origem. Qualquer arquivo combinado é mantido na imagem final.
BP_EXCLUDE_FILES Lista separada por dois pontos de padrões glob para combinar os arquivos de origem. Qualquer arquivo combinado é removido da imagem final. Todos os padrões de inclusão são aplicados primeiro e você pode usar "excluir padrões" para reduzir os arquivos incluídos no build.
BP_JAVA_INSTALL_NODE Controla se um Buildpack separado instala ou não o Yarn e Node.js. Se definido como true, o Buildpack verifica a raiz do aplicativo ou o caminho definido por BP_NODE_PROJECT_PATH. O caminho do projeto procura um arquivo yarn.lock, que requer a instalação do Yarn e do Node.js. Se houver um arquivo package.json, o build exigirá apenas o Node.js. false
BP_NODE_PROJECT_PATH Direcione o subdiretório do projeto para procurar arquivos package.json e yarn.lock.

Configurar o Tomcat

Os Aplicativos de Contêiner dão suporte à execução de arquivos war no servidor de aplicativos Tomcat.

Aqui está uma listagem das variáveis de ambiente usadas para configurar o Tomcat:

Variável de ambiente de build Descrição Padrão
BP_TOMCAT_CONTEXT_PATH O caminho de contexto onde o aplicativo está montado. Assume o padrão de vazio (ROOT)
BP_TOMCAT_EXT_CONF_SHA256 O hash SHA256 do pacote de configuração externo.
BP_TOMCAT_ENV_PROPERTY_SOURCE_DISABLED Quando definido como true, o Buildpack não configura org.apache.tomcat.util.digester.EnvironmentPropertySource. Essa opção de configuração é adicionada para dar suporte ao carregamento das configurações de variáveis de ambiente e referenciá-las nos arquivos de configuração do Tomcat.
BP_TOMCAT_EXT_CONF_STRIP O número de níveis de diretório a serem retirados do pacote de configuração externo. 0
BP_TOMCAT_EXT_CONF_URI O URI de download do pacote de configuração externo.
BP_TOMCAT_EXT_CONF_VERSION A versão do pacote de configuração externo.
BP_TOMCAT_VERSION Usado para configurar uma versão específica do Tomcat. As versões do Tomcat com suporte incluem 8, 9 e 10. 9.*

Configurar o Serviço de Build na Nuvem

Aqui está uma listagem das variáveis de ambiente usadas para configurar um Serviço de Build na Nuvem:

Variável de ambiente de build Descrição Padrão
ORYX_DISABLE_TELEMETRY Controla se a coleta de telemetria deve ou não ser desabilitada. false

Como configurar variáveis de ambiente de build do Java

Observação

Para executar os comandos da CLI a seguir, use a versão 0.3.47 de extensão de Aplicativos de Contêiner ou superior. Use o comando az extension add --name containerapp --upgrade --allow-preview para instalar a versão mais recente.

Você pode configurar variáveis de ambiente de build do Java ao implantar o código-fonte do aplicativo Java por meio do comando da CLI az containerapp up, az containerapp create ou 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>

O argumento build-env-vars é uma lista de variáveis de ambiente para o build, valores separados por espaço no formato key=value. Aqui está uma lista de exemplos que você pode passar como variáveis:

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

Você também pode configurar as variáveis de ambiente de build do Java ao configurar o GitHub Actions com a CLI do Azure nos Aplicativos de Contêiner do Azure.

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>

Próximas etapas