Omgevingsvariabelen bouwen voor Java in Azure Container Apps

Azure Container Apps maakt gebruik van Buildpacks om automatisch een containerinstallatiekopieën te maken waarmee u rechtstreeks vanuit uw broncode naar de cloud kunt implementeren. Als u de controle wilt overnemen over uw buildconfiguratie, kunt u omgevingsvariabelen gebruiken om onderdelen van uw build aan te passen, zoals de JDK, Maven en Tomcat. In het volgende artikel wordt beschreven hoe u omgevingsvariabelen configureert om de controle over builds over te nemen die automatisch een container voor u maken.

Ondersteunde omgevingsvariabelen voor Java-build

JDK configureren

Container Apps gebruiken Microsoft Build van OpenJDK om broncode en als runtime-omgeving te bouwen. Vier LTS JDK-versies worden ondersteund: 8, 11, 17 en 21.

  • Voor broncodebuild is de standaardversie JDK 17.

  • Voor een JAR-bestandsbuild wordt de JDK-versie gelezen vanuit de bestandslocatie META-INF\MANIFEST.MF in de JAR, maar wordt de standaard JDK-versie 17 gebruikt als de opgegeven versie niet beschikbaar is.

Hier volgt een overzicht van de omgevingsvariabelen die worden gebruikt voor het configureren van JDK:

Omgevingsvariabele Beschrijving Standaard
BP_JVM_VERSION Hiermee bepaalt u de JVM-versie. 17

Maven configureren

Container Apps biedt ondersteuning voor het bouwen van op Maven gebaseerde toepassingen vanuit de bron.

Hier volgt een overzicht van de omgevingsvariabelen die worden gebruikt om Maven te configureren:

Omgevingsvariabele bouwen Beschrijving Standaard
BP_MAVEN_VERSION Hiermee stelt u de primaire Maven-versie in. Omdat Buildpacks slechts één versie van elke ondersteunde regel verzendt, kunnen updates van het buildpack de exacte versie van Maven wijzigen die is geïnstalleerd. Als u een specifieke secundaire/patchversie van Maven nodig hebt, gebruikt u in plaats daarvan de Maven-wrapper. 3
BP_MAVEN_BUILD_ARGUMENTS Hiermee definieert u de argumenten die worden doorgegeven aan Maven. De --batch-mode lijst wordt voorafgegaan door de lijst met argumenten in omgevingen zonder een TTY. -Dmaven.test.skip=true --no-transfer-progress package
BP_MAVEN_ADDITIONAL_BUILD_ARGUMENTS Hiermee definieert u extra argumenten die worden gebruikt (bijvoorbeeld -DskipJavadoc toegevoegd aan BP_MAVEN_BUILD_ARGUMENTS) om aan Maven door te geven.
BP_MAVEN_ACTIVE_PROFILES Door komma's gescheiden lijst met actieve profielen die worden doorgegeven aan Maven.
BP_MAVEN_BUILT_MODULE Hiermee wijst u toepassingsartefacten aan die de module bevatten. Standaard ziet de build er in de hoofdmodule uit.
BP_MAVEN_BUILT_ARTIFACT Locatie van het gemaakte toepassingsartefact. Deze waarde vervangt de BP_MAVEN_BUILT_MODULE variabele. U kunt één bestand, meerdere bestanden of een map vergelijken met een of meer door ruimte gescheiden patronen. target/*.[ejw]ar
BP_MAVEN_POM_FILE Hiermee geeft u een aangepaste locatie op voor het pom.xml-bestand van het project. Deze waarde is relatief ten opzichte van de hoofdmap van het project (bijvoorbeeld /workspace). pom.xml
BP_MAVEN_DAEMON_ENABLED Hiermee wordt de installatie en configuratie van Apache maven-mvnd geactiveerd in plaats van Maven. Stel deze waarde in op true als u de Maven-daemon wilt gebruiken. false
BP_MAVEN_SETTINGS_PATH Hiermee geeft u een aangepaste locatie op naar het settings.xml-bestand van Maven.
BP_INCLUDE_FILES Door dubbele punt gescheiden lijst met glob-patronen die overeenkomen met bronbestanden. Elk overeenkomend bestand wordt bewaard in de uiteindelijke afbeelding.
BP_EXCLUDE_FILES Door dubbele punt gescheiden lijst met glob-patronen die overeenkomen met bronbestanden. Elk overeenkomend bestand wordt verwijderd uit de uiteindelijke afbeelding. Alle insluitingspatronen worden eerst toegepast en u kunt 'patronen uitsluiten' gebruiken om de bestanden in de build te verminderen.
BP_JAVA_INSTALL_NODE Bepalen of een afzonderlijk Buildpack Yarn en Node.js installeert. Als deze optie is ingesteld true, controleert buildpack de hoofdmap of het pad van de app dat is ingesteld door BP_NODE_PROJECT_PATH. Het projectpad zoekt naar een yarn.lock-bestand , waarvoor de installatie van Yarn en Node.js is vereist. Als er een package.json bestand is, is voor de build alleen Node.js vereist. false
BP_NODE_PROJECT_PATH De submap van het project om te zoeken naar package.json- en yarn.lock-bestanden .

Tomcat configureren

Container Apps biedt ondersteuning voor het uitvoeren van war-bestanden in de Tomcat-toepassingsserver.

Hier volgt een overzicht van de omgevingsvariabelen die worden gebruikt om Tomcat te configureren:

Omgevingsvariabele bouwen Beschrijving Standaard
BP_TOMCAT_CONTEXT_PATH Het contextpad waar de toepassing is gekoppeld. Standaardwaarden leeg (ROOT)
BP_TOMCAT_EXT_CONF_SHA256 De SHA256-hash van het externe configuratiepakket.
BP_TOMCAT_ENV_PROPERTY_SOURCE_DISABLED Als deze instelling is ingesteld true, wordt het Buildpack niet geconfigureerd org.apache.tomcat.util.digester.EnvironmentPropertySource. Deze configuratieoptie wordt toegevoegd ter ondersteuning van het laden van de configuratie vanuit omgevingsvariabelen en deze te raadplegen in Tomcat-configuratiebestanden.
BP_TOMCAT_EXT_CONF_STRIP Het aantal mapniveaus dat moet worden verwijderd uit het externe configuratiepakket. 0
BP_TOMCAT_EXT_CONF_URI De download-URI van het externe configuratiepakket.
BP_TOMCAT_EXT_CONF_VERSION De versie van het externe configuratiepakket.
BP_TOMCAT_VERSION Wordt gebruikt om een specifieke Tomcat-versie te configureren. Ondersteunde Tomcat-versies zijn 8, 9 en 10. 9.*

Cloud Build Service configureren

Hier volgt een overzicht van de omgevingsvariabelen die worden gebruikt voor het configureren van een Cloud Build-service:

Omgevingsvariabele bouwen Beschrijving Standaard
ORYX_DISABLE_TELEMETRY Hiermee bepaalt u of telemetrieverzameling al dan niet moet worden uitgeschakeld. false

Omgevingsvariabelen voor Java-build configureren

U kunt omgevingsvariabelen voor Java-build configureren wanneer u de broncode van de Java-toepassing implementeert via de CLI-opdracht az containerapp up, az containerapp createof 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>

Het build-env-vars argument is een lijst met omgevingsvariabelen voor de build, door spaties gescheiden waarden in key=value indeling. Hier volgt een voorbeeldlijst die u als variabelen kunt doorgeven:

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

U kunt ook de java-omgevingsvariabelen configureren wanneer u GitHub Actions instelt met Azure CLI in 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>

Volgende stappen