다음을 통해 공유


JAR 또는 WAR에서 컨테이너 이미지 빌드

참고 항목

기본, 표준엔터프라이즈 계획은 2025년 3월 중순부터 사용되지 않으며 3년의 은퇴 기간이 있습니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 사용 중지 공지 사항을 참조하세요.

표준 소비 및 전용 계획은 2024년 9월 30일부터 사용되지 않으며 6개월 후에 완전히 종료됩니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 표준 사용량 및 전용 계획을 Azure Container Apps로 마이그레이션을 참조 하세요.

이 문서는 기본/표준 ✅ 엔터프라이즈에✅ 적용됩니다.

이 문서에서는 JAVA 애플리케이션을 JAR 또는 WAR 파일에서 컨테이너 이미지로 패키지하는 방법에 대한 지침을 제공합니다.

Azure Spring Apps 표준 계획을 사용하면 JAR 또는 WAR 파일을 업로드할 수 있으며, 이 파일은 관리되는 컨테이너 이미지에 자동으로 패키지됩니다. 마찬가지로 Azure Container Apps 및 AKS(Azure Kubernetes Service)도 JAR 또는 WAR 파일에서 직접 컨테이너 앱 배포를 지원합니다.

필수 조건

  • Docker.
  • 컨테이너 이미지 스토리지에 대한 기존 컨테이너 레지스트리입니다. Azure Container Registry의 경우 Azure Portal을 사용하거나 Azure CLI통해 설정할 수 있습니다.

컨테이너 이미지 빌드

Azure Spring Apps에 사용된 것과 일치하는 컨테이너 이미지를 만들려면 이미지를 직접 빌드할 수 있습니다. JAR 파일, WAR 파일 또는 Java 소스 코드를 컨테이너 이미지로 빌드하려면 다음 일반 단계를 사용합니다.

  1. JAVA 소스 코드를 JAR 파일 또는 WAR 파일로 빌드합니다.
  2. Dockerfile을 만들고 다음 작업을 수행합니다.
    1. (WAR 파일만 해당) Tomcat을 다운로드하고 구성합니다.
    2. JAR 파일 또는 WAR 파일을 컨테이너 이미지에 복사합니다.
    3. 컨테이너 이미지의 진입점을 지정합니다.
  3. 이전 단계에서 만든 Dockerfile을 사용하여 명령을 실행 docker build 하여 컨테이너 이미지를 만듭니다.
  4. 컨테이너 이미지를 퍼블릭 또는 프라이빗 컨테이너 레지스트리에 푸시하여 나중에 Azure Container Apps 환경 또는 AKS(Azure Kubernetes Service) 클러스터에 배포할 수 있습니다.

다음 섹션에서는 이러한 단계를 좀 더 자세히 설명합니다.

JAR 파일 빌드

애플리케이션이 Azure Spring Apps에서 원활하게 실행되는 경우 Microsoft Build of OpenJDK에 컨테이너 이미지를 사용하는 것이 좋습니다. 요구 사항이 변경되면 요구 사항에 더 적합한 다른 컨테이너 이미지를 선택할 수 있습니다.

Azure Spring Apps에서 실행되는 배포에 사용되는 JDK 버전을 확인하려면 다음 명령을 사용합니다.

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

다음 예제 Dockerfile은 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"]

이 Dockerfile을 사용하여 컨테이너 이미지를 빌드하려면 다음 명령을 사용합니다.

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

JVM 옵션을 사용자 지정하는 방법에 대한 자세한 내용은 JVM 옵션을 참조 하세요.

WAR 파일 빌드

WAR 파일을 빌드하기 전에 사용할 JDK 및 Tomcat 버전을 결정해야 합니다.

Azure Spring Apps에서 실행되는 배포에 사용되는 Tomcat 버전을 확인하려면 다음 명령을 사용합니다.

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

다음 예제에서는 JDK 17을 기반으로 하는 Dockerfile을 보여줍니다.

# 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"]

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

다단계 빌드

앞에서 언급한 두 가지 방법은 패키지 전용 빌드입니다. 로컬 빌드 도구를 사용하여 빌드 프로세스를 관리하고 결과를 JAR 또는 WAR 파일로 패키지합니다.

호스트 머신에 빌드 도구 또는 JDK를 설치하지 않으려는 경우 여러 컴퓨터에서 일관된 결과를 얻으려면 Dockerfile에서 여러 빌드 단계를 정의하여 대체 방법을 사용할 수 있습니다. 한 단계는 컴파일 및 패키징 전용이고 다른 단계는 이미지 빌드 프로세스를 처리합니다. 자세한 내용은 다단계 빌드를 참조 하세요.

Azure Container Registry 작업

Azure Container Registry 인스턴스가 있는 경우 Azure Container Registry 작업을 사용하여 컨테이너 이미지를 빌드, 푸시 및 실행할 수 있습니다. 자세한 내용은 빠른 시작: Azure Container Registry 작업을 사용하여 컨테이너 이미지 빌드 및 실행을 참조하세요.