Delen via


Een containerinstallatiekopieën bouwen vanuit een JAR of WAR

Notitie

De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.

Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.

Dit artikel is van toepassing op:✅ Basic/Standard ✅ Enterprise

Dit artikel bevat richtlijnen voor het verpakken van uw Java-toepassing vanuit een JAR- of WAR-bestand in een containerinstallatiekopieën.

Met het Azure Spring Apps Standard-plan kunt u een JAR- of WAR-bestand uploaden, dat automatisch wordt verpakt in een beheerde containerinstallatiekopieën. Op dezelfde manier bieden Azure Container Apps en Azure Kubernetes Service (AKS) ook ondersteuning voor het rechtstreeks implementeren van een container-app vanuit een JAR- of WAR-bestand.

Vereisten

  • Docker.
  • Een bestaand containerregister voor opslag van containerinstallatiekopieën. Voor Azure Container Registry kunt u deze instellen met behulp van Azure Portal of via de Azure CLI.

Een containerinstallatiekopieën bouwen

Als u een containerinstallatiekopieën wilt maken die consistent is met de installatiekopieën die in Azure Spring Apps worden gebruikt, kunt u de installatiekopieën zelf maken. Als u een JAR-bestand, WAR-bestand of Java-broncode wilt maken in een containerinstallatiekopieën, gebruikt u de volgende algemene stappen:

  1. Bouw uw Java-broncode in een JAR-bestand of een WAR-bestand.
  2. Maak een Dockerfile en voer de volgende acties uit:
    1. (Alleen voor WAR-bestanden) Download Tomcat en configureer deze.
    2. Kopieer uw JAR-bestand of WAR-bestand naar de containerinstallatiekopie.
    3. Geef het toegangspunt van de containerinstallatiekopieën op.
  3. Maak een containerinstallatiekopieën door de docker build opdracht uit te voeren met het Dockerfile dat u in de vorige stap hebt gemaakt.
  4. Push de containerinstallatiekopieën naar een openbaar of persoonlijk containerregister, zodat u deze later kunt implementeren in een Azure Container Apps-omgeving of een AKS-cluster (Azure Kubernetes Service).

In de volgende secties worden deze stappen gedetailleerder beschreven.

Een JAR-bestand bouwen

We raden u aan containerinstallatiekopieën te gebruiken voor de Microsoft Build van OpenJDK als uw toepassing probleemloos wordt uitgevoerd in Azure Spring Apps. Als uw vereisten veranderen, kunt u andere containerinstallatiekopieën kiezen die beter aansluiten bij uw behoeften.

Gebruik de volgende opdracht om te bepalen welke JDK-versie wordt gebruikt in uw implementatie die wordt uitgevoerd in Azure Spring Apps:

az spring app deployment show \
    --app <app-name> \
    --name <deployment-name> \
    --resource-group <resource-group> \
    --service <service-name> \
    --query properties.source.runtimeVersion

Het volgende voorbeeld van Dockerfile is gebaseerd op JDK 17:

# filename: JAR.dockerfile

FROM mcr.microsoft.com/openjdk/jdk:17-mariner

ARG JAR_FILENAME

COPY $JAR_FILENAME /opt/app/app.jar
ENTRYPOINT ["java", "-jar", "/opt/app/app.jar"]

Gebruik de volgende opdracht om uw containerinstallatiekopieën te bouwen met dit Dockerfile:

docker build -t <image-name>:<image-tag> \
    -f JAR.dockerfile \
    --build-arg JAR_FILENAME=<path-to-jar> \
    .

Zie JVM-opties voor meer informatie over het aanpassen van JVM-opties.

Een WAR-bestand bouwen

Voordat u een WAR-bestand bouwt, moet u beslissen welke versies van de JDK en Tomcat moeten worden gebruikt.

Gebruik de volgende opdracht om te bepalen welke Tomcat-versie wordt gebruikt in uw implementatie die wordt uitgevoerd in Azure Spring Apps:

az spring app deployment show \
    --app <app-name> \
    --name <deployment-name> \
    --resource-group <resource-group> \
    --service <service-name> \
    --query properties.source.serverVersion

In het volgende voorbeeld ziet u een Dockerfile op basis van JDK 17:

# filename: WAR.dockerfile

FROM mcr.microsoft.com/openjdk/jdk:17-mariner

ARG TOMCAT_VERSION
ARG TOMCAT_MAJOR_VERSION
ARG WAR_FILENAME
ARG TOMCAT_HOME=/opt/tomcat

# Set up Tomcat
ADD https://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR_VERSION/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz \
    $TOMCAT_HOME/apache-tomcat-$TOMCAT_VERSION.tar.gz
RUN tdnf update -y \
    && tdnf install -y tar \
    && tar -zxf $TOMCAT_HOME/apache-tomcat-$TOMCAT_VERSION.tar.gz -C $TOMCAT_HOME --strip-components 1 \
    && rm $TOMCAT_HOME/apache-tomcat-$TOMCAT_VERSION.tar.gz \
    && rm -r $TOMCAT_HOME/webapps/*

COPY $WAR_FILENAME $TOMCAT_HOME/webapps/app.war
ENTRYPOINT ["/bin/sh", "-c" , "/opt/tomcat/bin/catalina.sh run"]

Gebruik de volgende opdracht om uw containerinstallatiekopieën te bouwen met dit Dockerfile:

docker build -t <image-name>:<image-tag> \
    -f WAR.dockerfile \
    --build-arg WAR_FILENAME=<path-to-war> \
    --build-arg TOMCAT_VERSION=<version> \
    --build-arg TOMCAT_MAJOR_VERSION=<major-version> \
    .

Builds met meerdere fasen

De twee hierboven genoemde benaderingen zijn builds met alleen pakketten. Ze zijn afhankelijk van uw lokale buildhulpprogramma om het buildproces te beheren en het resultaat in een JAR- of WAR-bestand te verpakken.

Als u liever geen buildhulpprogramma of JDK op de hostcomputer installeert, maar u consistente resultaten op verschillende computers wilt, kunt u een alternatieve methode gebruiken door meerdere buildfasen in een Dockerfile te definiëren. Eén fase is gewijd aan compilatie en verpakking, en een andere fase verwerkt het proces voor het bouwen van afbeeldingen. Zie Builds met meerdere fasen voor meer informatie.

Azure Container Registry-taken

Als u een Azure Container Registry-exemplaar hebt, kunt u een containerinstallatiekopieën bouwen, pushen en uitvoeren met behulp van Azure Container Registry Tasks. Zie quickstart: Een containerinstallatiekopieën bouwen en uitvoeren met behulp van Azure Container Registry Tasks voor meer informatie.