Sdílet prostřednictvím


Sestavení image kontejneru z JAR nebo WAR

Poznámka:

Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.

Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.

Tento článek se vztahuje na:✅ Basic/Standard ✅ Enterprise

Tento článek obsahuje pokyny k zabalení aplikace v Javě ze souboru JAR nebo WAR do image kontejneru.

Plán Azure Spring Apps Standard umožňuje nahrát soubor JAR nebo WAR, který se automaticky zabalí do spravované image kontejneru. Podobně služba Azure Container Apps a Azure Kubernetes Service (AKS) také podporují nasazení aplikace typu kontejner přímo ze souboru JAR nebo WAR.

Požadavky

  • Docker.
  • Existující registr kontejneru pro úložiště imagí kontejnerů. Pro Službu Azure Container Registry ji můžete nastavit pomocí webu Azure Portal nebo pomocí Azure CLI.

Sestavení image kontejneru

Pokud chcete vytvořit image kontejneru, která je konzistentní s imagí používanou v Azure Spring Apps, můžete image vytvořit sami. K sestavení souboru JAR, souboru WAR nebo zdrojového kódu Java do image kontejneru použijte následující obecné kroky:

  1. Sestavte zdrojový kód Java do souboru JAR nebo souboru WAR.
  2. Vytvořte soubor Dockerfile a proveďte následující akce:
    1. (Pouze pro soubory WAR) Stáhněte si Tomcat a nakonfigurujte ho.
    2. Zkopírujte soubor JAR nebo soubor WAR do image kontejneru.
    3. Zadejte vstupní bod image kontejneru.
  3. Vytvořte image kontejneru docker build spuštěním příkazu se souborem Dockerfile vytvořeným v předchozím kroku.
  4. Nasdílení image kontejneru do veřejného nebo privátního registru kontejneru, abyste ji mohli nasadit v prostředí Azure Container Apps nebo clusteru Azure Kubernetes Service (AKS) později.

Následující části popisují tyto kroky podrobněji.

Vytvoření souboru JAR

Image kontejnerů doporučujeme použít pro microsoft build OpenJDK , pokud vaše aplikace běží hladce v Azure Spring Apps. Pokud se vaše požadavky změní, můžete zvolit jiné image kontejnerů, které lépe vyhovují vašim potřebám.

Pokud chcete zjistit verzi sady JDK použitou ve vašem nasazení spuštěném v Azure Spring Apps, použijte následující příkaz:

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

Následující příklad souboru Dockerfile je založen na 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"]

K sestavení image kontejneru pomocí tohoto souboru Dockerfile použijte následující příkaz:

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

Informace o přizpůsobení možností prostředí JVM naleznete v tématu Možnosti prostředí JVM.

Vytvoření souboru WAR

Než vytvoříte soubor WAR, musíte se rozhodnout, které verze sady JDK a Tomcat použít.

Pokud chcete zjistit verzi Tomcat použitou ve vašem nasazení spuštěnou v Azure Spring Apps, použijte následující příkaz:

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

Následující příklad ukazuje soubor Dockerfile založený na 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"]

K sestavení image kontejneru pomocí tohoto souboru Dockerfile použijte následující příkaz:

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> \
    .

Sestavení s více fázemi

Dva uvedené přístupy jsou sestavení jen pro balíčky. Spoléhají na váš místní nástroj sestavení ke správě procesu sestavení a zabalí výsledek do souboru JAR nebo WAR.

Pokud nechcete instalovat nástroj sestavení nebo sadu JDK na hostitelský počítač, ale chcete konzistentní výsledky napříč různými počítači, můžete použít alternativní metodu definováním více fází sestavení v souboru Dockerfile. Jedna fáze je vyhrazená pro kompilaci a balení a další fáze zpracovává proces vytváření obrázků. Další informace naleznete v tématu Vícefázové sestavení.

Úlohy Azure Container Registry

Pokud máte instanci služby Azure Container Registry, můžete sestavit, odeslat a spustit image kontejneru pomocí služby Azure Container Registry Tasks. Další informace najdete v tématu Rychlý start: Sestavení a spuštění image kontejneru pomocí úloh služby Azure Container Registry.