Criar variáveis de ambiente para Java em Aplicativos de Contêiner do Azure (visualização)

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 da compilação, você pode usar variáveis de ambiente para personalizar partes da compilação, como JDK, Maven e Tomcat. O artigo a seguir mostra como configurar variáveis de ambiente para ajudá-lo a assumir o controle sobre compilações que criam automaticamente um contêiner para você.

Variáveis de ambiente de construção Java suportadas

Configurar o JDK

Os aplicativos de contêiner usam o Microsoft Build do OpenJDK para criar código-fonte e como o ambiente de tempo de execução. Quatro versões LTS JDK são suportadas: 8, 11, 17 e 21.

  • Para a compilação do código-fonte, a versão padrão é JDK 17.

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

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

Variável de ambiente Description Predefinido
BP_JVM_VERSION Controla a versão da JVM. 17

Configurar o Maven

O Container Apps suporta a criação de aplicativos baseados no Maven a partir do código-fonte.

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

Variável de ambiente de construção Description Predefinido
BP_MAVEN_VERSION Define a versão principal do Maven. Como o Buildpacks envia apenas uma única versão de cada linha suportada, as atualizações para o 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 invólucro Maven. 3
BP_MAVEN_BUILD_ARGUMENTS Define os argumentos passados para o Maven. O --batch-mode é prepended para a lista de argumentos em ambientes sem um TTY. -Dmaven.test.skip=true --no-transfer-progress package
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS Define argumentos extras usados (por exemplo, -DskipJavadoc anexados 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, a compilação aparece no módulo raiz.
BP_MAVEN_BUILT_ARTIFACT Localização do artefato de aplicativo construído. Este valor substitui a BP_MAVEN_BUILT_MODULE variável. Você pode corresponder a 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 pom.xml do projeto. Esse valor é relativo à raiz do projeto (por exemplo, /workspace). pom.xml
BP_MAVEN_DAEMON_ENABLED Aciona a instalação e configuração do Apache maven-mvnd em vez do Maven. Defina esse valor como true se quiser para o Maven Daemon. false
BP_MAVEN_SETTINGS_PATH Especifica um local personalizado para o arquivo settings.xml do Maven.
BP_INCLUDE_FILES Colon lista separada de padrões glob para corresponder aos arquivos de origem. Qualquer arquivo correspondente é mantido na imagem final.
BP_EXCLUDE_FILES Colon lista separada de padrões glob para corresponder aos arquivos de origem. Qualquer ficheiro correspondente é 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 na compilação.
BP_JAVA_INSTALL_NODE Controle se um Buildpack separado instala ou não o Yarn e o 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 , a compilação requer apenas Node.js. false
BP_NODE_PROJECT_PATH Direcione o subdiretório do projeto para procurar arquivos package.json e yarn.lock .

Configurar o Tomcat

O Container Apps suporta a execução de arquivos war no servidor de aplicativos Tomcat.

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

Variável de ambiente de construção Description Predefinido
BP_TOMCAT_CONTEXT_PATH O caminho de contexto onde o aplicativo é montado. O padrão é vazio (ROOT)
BP_TOMCAT_EXT_CONF_SHA256 O hash SHA256 do pacote de configuração externa.
BP_TOMCAT_ENV_PROPERTY_SOURCE_DISABLED Quando definido como true, o Buildpack não configura org.apache.tomcat.util.digester.EnvironmentPropertySourceo . Essa opção de configuração é adicionada para suportar o carregamento de configuração de variáveis de ambiente e a referência a elas em arquivos de configuração do Tomcat.
BP_TOMCAT_EXT_CONF_STRIP O número de níveis de diretório a serem removidos do pacote de configuração externo. 0
BP_TOMCAT_EXT_CONF_URI O URI de download do pacote de configuração externa.
BP_TOMCAT_EXT_CONF_VERSION A versão do pacote de configuração externa.
BP_TOMCAT_VERSION Usado para configurar uma versão específica do Tomcat. As versões suportadas do Tomcat incluem 8, 9 e 10. 9.*

Configurar o serviço Cloud Build

Aqui está uma lista das variáveis de ambiente usadas para configurar um Cloud Build Service:

Variável de ambiente de construção Description Predefinido
ORYX_DISABLE_TELEMETRY Controla se a coleta de telemetria deve ou não ser desabilitada. false

Como configurar variáveis de ambiente de construção Java

Nota

Para executar os seguintes comandos da CLI, use a versão da extensão Container Apps ou 0.3.47 superior. Use o az extension add --name containerapp --upgrade --allow-preview comando para instalar a versão mais recente.

Você pode configurar variáveis de ambiente de construção Java ao implementar o código-fonte do aplicativo Java por meio do comando az containerapp upCLI , az containerapp createou 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 build-env-vars argumento é uma lista de variáveis de ambiente para a compilação, valores separados por espaço no key=value formato. Aqui está uma lista de exemplo 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 compilação Java ao configurar as Ações do GitHub com a CLI do Azure em 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óximos passos