Creare variabili di ambiente per Java in App contenitore di Azure (anteprima)

La piattaforma App contenitore di Azure usa Buildpacks per creare automaticamente un'immagine del contenitore che consente di eseguire la distribuzione dal codice sorgente direttamente al cloud. Per assumere il controllo della configurazione di compilazione, è possibile usare le variabili di ambiente per personalizzare parti della compilazione, ad esempio JDK, Maven e Tomcat. L'articolo seguente illustra come configurare le variabili di ambiente per acquisire il controllo sulle compilazioni che creano automaticamente un contenitore.

Variabili di ambiente di compilazione Java supportate

Configurare JDK

La piattaforma App contenitore usa Microsoft Build of OpenJDK per compilare il codice sorgente e come ambiente di runtime. Sono supportate quattro versioni JDK LTS: 8, 11, 17 e 21.

  • Per la compilazione del codice sorgente, la versione predefinita è JDK 17.

  • Per una compilazione di file JAR, la versione JDK viene letta dal percorso del file META-INF\MANIFEST.MF nel file JAR, ma usa la versione JDK predefinita 17 se la versione specificata non è disponibile.

Ecco un elenco delle variabili di ambiente usate per configurare JDK:

Variabile di ambiente Descrizione Default
BP_JVM_VERSION Controlla la versione di JVM. 17

Configurare Maven

App contenitore supporta la compilazione di applicazioni basate su Maven dall'origine.

Ecco un elenco delle variabili di ambiente usate per configurare Maven:

Variabile di ambiente di compilazione Descrizione Default
BP_MAVEN_VERSION Imposta la versione principale di Maven. Poiché Buildpacks include solo una singola versione di ogni riga supportata, gli aggiornamenti al buildpack possono modificare la versione esatta di Maven installata. Se è necessaria una versione secondaria/patch specifica di Maven, usare invece il wrapper Maven. 3
BP_MAVEN_BUILD_ARGUMENTS Definisce gli argomenti passati a Maven. Il valore --batch-mode viene anteposto all'elenco di argomenti in ambienti senza TTY. -Dmaven.test.skip=true --no-transfer-progress package
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS Definisce argomenti aggiuntivi usati (ad esempio, -DskipJavadoc accodato a BP_MAVEN_BUILD_ARGUMENTS) da passare a Maven.
BP_MAVEN_ACTIVE_PROFILES Elenco delimitato da virgole dei profili attivi passati a Maven.
BP_MAVEN_BUILT_MODULE Designa l'artefatto dell'applicazione che contiene il modulo. Per impostazione predefinita, la compilazione cerca nel modulo radice.
BP_MAVEN_BUILT_ARTIFACT Posizione dell'artefatto dell'applicazione compilata. Questo valore sostituisce la variabile BP_MAVEN_BUILT_MODULE. È possibile trovare una corrispondenza con un singolo file, più file o una directory tramite uno o più criteri separati da spazi. target/*.[ejw]ar
BP_MAVEN_POM_FILE Specifica un percorso personalizzato per il file pom.xml del progetto. Questo valore è relativo alla radice del progetto, ad esempio, /workspace. pom.xml
BP_MAVEN_DAEMON_ENABLED Attiva l'installazione e la configurazione di maven-mvnd per Apache invece di Maven. Impostare questo valore su true se si vuole usare il daemon Maven. false
BP_MAVEN_SETTINGS_PATH Specifica un percorso personalizzato per il file settings.xml di Maven.
BP_INCLUDE_FILES Elenco di criteri GLOB separati da due punti per trovare le corrispondenze con i file di origine. Qualsiasi file corrispondente viene conservato nell'immagine finale.
BP_EXCLUDE_FILES Elenco di criteri GLOB separati da due punti per trovare le corrispondenze con i file di origine. Qualsiasi file corrispondente viene rimosso dall'immagine finale. Tutti i criteri di inclusione vengono applicati per primi ed è possibile usare "criteri di esclusione" per ridurre i file inclusi nella compilazione.
BP_JAVA_INSTALL_NODE Consente di controllare se un buildpack separato installa Yarn e Node.js. Se impostato su true, buildpack controlla la radice o il percorso dell'app impostato da BP_NODE_PROJECT_PATH. Il percorso del progetto cerca un file yarn.lock, che richiede l'installazione di Yarn e Node.js. Se è presente un file package.json, la compilazione richiede solo Node.js. false
BP_NODE_PROJECT_PATH Consente di richiedere alla sottodirectory del progetto di cercare i file package.json e yarn.lock.

Configurare Tomcat

La piattaforma App contenitore supporta l'esecuzione di file WAR nel server applicazioni Tomcat.

Ecco un elenco delle variabili di ambiente usate per configurare Tomcat:

Variabile di ambiente di compilazione Descrizione Default
BP_TOMCAT_CONTEXT_PATH Percorso del contesto in cui è montata l'applicazione. Per impostazione predefinita è vuoto (ROOT)
BP_TOMCAT_EXT_CONF_SHA256 Hash SHA256 del pacchetto di configurazione esterno.
BP_TOMCAT_ENV_PROPERTY_SOURCE_DISABLED Se impostato su true, buildpack non configura org.apache.tomcat.util.digester.EnvironmentPropertySource. Questa opzione di configurazione viene aggiunta per supportare il caricamento della configurazione dalle variabili di ambiente e per farvi riferimento nei file di configurazione di Tomcat.
BP_TOMCAT_EXT_CONF_STRIP Numero di livelli di directory da rimuovere dal pacchetto di configurazione esterno. 0
BP_TOMCAT_EXT_CONF_URI URI di download del pacchetto di configurazione esterno.
BP_TOMCAT_EXT_CONF_VERSION Versione del pacchetto di configurazione esterno.
BP_TOMCAT_VERSION Usato per configurare una versione specifica di Tomcat. Le versioni di Tomcat supportate includono 8, 9 e 10. 9.*

Configurare il servizio Cloud Build

Ecco un elenco delle variabili di ambiente usate per configurare un servizio Cloud Build:

Variabile di ambiente di compilazione Descrizione Default
ORYX_DISABLE_TELEMETRY Controlla se disabilitare o meno la raccolta di dati di telemetria. false

Come configurare le variabili di ambiente di compilazione Java

Nota

Per eseguire i comandi dell'interfaccia della riga di comando seguenti, usare la versione 0.3.47 o successive dell'estensione App contenitore. Usare quindi il comando az extension add --name containerapp --upgrade --allow-preview per installare la versione più recente.

È possibile configurare le variabili di ambiente di compilazione Java quando si distribuisce il codice sorgente dell'applicazione Java tramite il comando az containerapp up, az containerapp create o az containerapp update dell'interfaccia della riga di comando:

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>

L'argomento build-env-vars è un elenco di variabili di ambiente per la compilazione, con valori separati da spazi in formato key=value. Ecco un elenco di esempio che è possibile passare come variabili:

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

È anche possibile configurare le variabili di ambiente di compilazione Java durante la configurazione di GitHub Actions con l'interfaccia della riga di comando di Azure in App contenitore di 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>

Passaggi successivi