Azure App Service에서 Linux에 Spring Boot 애플리케이션 배포

이 자습서에서는 Docker를 사용하여 Azure App Service에서 Spring Boot 애플리케이션을 컨테이너화하고 Linux 호스트로 Docker 이미지를 배포하는 방법을 설명합니다.

필수 조건

이 자습서의 단계를 완료하려면 다음 필수 구성 요소가 있어야 합니다.

참고 항목

이 자습서의 가상화 요구 사항으로 인해 가상 머신에는 이 문서의 단계를 따를 수 없습니다. 따라서 가상화 기능이 사용하도록 설정된 물리적 컴퓨터를 사용해야 합니다.

Docker 시작 웹앱에서 Spring Boot 만들기

다음 단계에서는 간단한 Spring Boot 웹 애플리케이션을 만들고 로컬로 테스트하는 데 필요한 단계를 안내합니다.

  1. 명령 프롬프트를 열고 애플리케이션을 저장할 로컬 디렉터리를 만들고 해당 디렉터리로 변경합니다. 예를 들어:

    mkdir SpringBoot
    cd SpringBoot
    
  2. Spring Boot on Docker 시작 샘플 프로젝트를 만든 디렉터리에 복제합니다. 예를 들면 다음과 같습니다.

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. 디렉터리를 완료된 프로젝트로 변경합니다. 예를 들어:

    cd gs-spring-boot-docker/complete
    
  4. Maven을 사용하여 JAR 파일을 빌드합니다. 예:

    mvn package
    
  5. 웹앱이 만들어지면 디렉터리를 JAR 파일이 있는 디렉터리로 target 변경하고 웹앱을 시작합니다. 예를 들면 다음과 같습니다.

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. 웹 브라우저를 사용하여 로컬로 이동하여 웹앱을 테스트합니다. 예를 들어 curl을 사용할 수 있고 포트 80에서 실행하도록 Tomcat 서버를 구성한 경우:

    curl http://localhost
    
  7. Hello Docker World 메시지가 표시됩니다.

    Browse Sample App Locally

Azure Container Registry를 만들어서 프라이빗 Docker 레지스트리로 사용

다음 단계에서는 Azure Portal을 사용하여 Azure Container Registry를 만드는 방법을 안내합니다.

참고 항목

Azure Portal 대신 Azure CLI를 사용하려면 Azure CLI 2.0을 사용하여 프라이빗 Docker 컨테이너 레지스트리 만들기의 단계를 따릅니다.

  1. Azure Portal을 찾아 로그인합니다.

    Azure Portal에서 계정에 로그인한 후에는 Azure Portal 문서를 사용하여 프라이빗 Docker 컨테이너 레지스트리 만들기의 단계를 수행합니다. 이 문서는 편의를 위해 다음 단계에서 설명합니다.

  2. 새로 만들기의 메뉴 아이콘을 클릭하고 컨테이너를 선택한 다음, Azure Container Registry를 선택합니다.

    Create a new Azure Container Registry

  3. 컨테이너 레지스트리 만들기 페이지가 표시되면 레지스트리 이름, 구독, 리소스 그룹위치를 입력합니다. 그런 다음 만들기를 선택합니다.

    Configure Azure Container Registry settings

  4. 설정 아래에서 액세스 키를 선택하고 관리 사용자 뒤에 있는 사용 스위치켭니다.

    Enable admin user UI in the Azure portal

이미지를 Azure Container Registry에 빌드하도록 Maven 구성

  1. Spring Boot 애플리케이션에 대해 완료된 프로젝트 디렉터리(예: "C:\SpringBoot\gs-spring-boot-docker\complete" 또는 "/users/robert/SpringBoot/gs-spring-boot-docker/complete")로 이동하고 텍스트 편집기를 사용하여 pom.xml 파일을 엽니다.

  2. 이 자습서의 <properties> 이전 섹션에서 Azure Container Registry에 대한 최신 버전의 jib-maven-plugin, 로그인 서버 값 및 액세스 설정으로 pom.xml 파일의 컬렉션을 업데이트합니다. 예시:

    <properties>
       <jib-maven-plugin.version>3.2.0</jib-maven-plugin.version>
       <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix>
       <java.version>1.8</java.version>
    </properties>
    
  3. pom.xml 파일의 컬렉션에 <plugins> jib-maven-plugin추가합니다. 이 예제에서는 버전 3.2.0을 사용합니다.

    여기에서 기본 이미지를 <from>/<image>지정합니다 mcr.microsoft.com/openjdk/jdk:11-ubuntu. 기본에서 작성할 최종 이미지의 이름을 지정합니다 <to>/<image>.

    인증 {docker.image.prefix}이전에 표시된 레지스트리 페이지의 로그인 서버 입니다. {project.artifactId} 프로젝트의 첫 번째 Maven 빌드에서 JAR 파일의 이름 및 버전 번호입니다.

    <plugin>
      <artifactId>jib-maven-plugin</artifactId>
      <groupId>com.google.cloud.tools</groupId>
      <version>${jib-maven-plugin.version}</version>
      <configuration>
         <from>
             <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image>
         </from>
         <to>
             <image>${docker.image.prefix}/${project.artifactId}</image>
         </to>
      </configuration>
    </plugin>
    
  4. Spring Boot 애플리케이션에 대해 완료된 프로젝트 디렉터리로 이동하고 다음 명령을 실행하여 애플리케이션을 다시 빌드하고 컨테이너를 Azure Container Registry로 푸시합니다.

    az acr login --name wingtiptoysregistry && mvn compile jib:build
    

참고 항목

  1. 이 명령은 az acr login ... Azure Container Registry에 로그인하려고 시도합니다. 그렇지 않으면 제공해야 <username> 하며 <password> jib-maven-plugin의 경우 jib의 인증 방법을 참조하세요.
  2. Jib를 사용하여 이미지를 Azure Container Registry로 푸시하는 경우 이미지는 Dockerfile사용하지 않습니다. 자세한 내용은 이 문서를 참조하세요.

컨테이너 이미지를 사용하여 Azure 앱 Service의 Linux에서 웹앱 만들기

  1. Azure Portal을 찾아 로그인합니다.

  2. 리소스 만들기에 대한 메뉴 아이콘을 클릭하고 컴퓨팅을 선택한 다음 웹앱을 선택합니다.

    Create a new web app in the Azure portal

  3. Linux웹앱 페이지가 표시되면 다음 정보를 입력합니다.

    • 드롭다운 목록에서 구독을 선택합니다.

    • 기존 리소스 그룹을 선택하거나 이름을 지정하여 새 리소스 그룹을 만듭니다.

    • 앱 이름고유한 이름을 입력합니다(예: "wingtiptoyslinux").

    • 게시하도록 지정 Docker Container 합니다.

    • Linux를 운영 체제로 선택합니다.

    • 지역을 선택합니다.

    • Linux 계획에 동의하고 기존 App Service 계획을 선택하거나 새로 만들기를 선택하여 새 App Service 계획을 만듭니다.

    • 다음: Docker를 클릭합니다.

    Click the Next: Docker button to proceed.

    웹앱 페이지에서 Docker를 선택하고 다음 정보를 입력합니다.

    • 단일 컨테이너를 선택합니다.

    • 레지스트리: 컨테이너 선택(예: "wingtiptoysregistry"

    • 이미지: 이전에 만든 이미지(예: "spring-boot-docker")를 선택합니다.

    • 태그: 이미지의 태그를 선택합니다(예: "latest").

    • 시작 명령: 이미지에 시작 명령이 이미 있으므로 빈 상태로 유지

    위의 모든 정보를 입력한 후 검토 + 만들기를 선택합니다.

    Finish by selecting Review + Create.

    • 검토 + 만들기를 선택합니다.

정보를 검토하고 만들기를 선택합니다.

배포가 완료되면 리소스로 이동을 선택합니다. 배포 페이지에 애플리케이션에 액세스하는 데 사용하는 URL이 표시됩니다.

Get URL of deployment

참고 항목

Azure는 포트 - 80에서 실행되는 포함된 Tomcat 서버에 인터넷 요청을 자동으로 매핑합니다. 그러나 임베디드 Tomcat 서버가 8080 포트 또는 사용자 지정 포트에서 실행되도록 구성한 경우 임베디드 Tomcat 서버의 포트를 정의하는 환경 변수를 웹앱에 추가해야 합니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. Azure Portal을 찾아 로그인합니다.

  2. Web Apps 아이콘을 선택하고 App Services 페이지에서 해당 앱을 선택합니다.

  3. 왼쪽 탐색 창에서 구성을 선택합니다.

  4. 애플리케이션 설정 섹션에서 WEBSITES_PORT라는 새 설정을 추가하고 값에 대한 사용자 지정 포트 번호를 입력합니다.

  5. 확인을 선택합니다. 그런 다음 저장을 선택합니다.

Saving a custom port number in the Azure portal

리소스 정리

더 이상 필요하지 않은 경우 예기치 않은 요금을 방지하기 위해 Azure Portal을 사용하여 이 문서에서 만든 리소스를 삭제합니다.

다음 단계

Spring 및 Azure에 대해 자세히 알아보려면 Spring on Azure 설명서 센터를 계속 진행하세요.

참고 항목

Azure에서 Spring Boot 애플리케이션을 사용하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

Java에서 Azure를 사용하는 방법에 대한 자세한 내용은 Java 개발자용 Azure 및 Azure DevOps 및 Java 작업 방법을 참조하세요.

Docker의 Spring Boot 샘플 프로젝트에 대한 자세한 내용은 Docker 시작의 Spring Boot를 참조하세요.

자체 Spring Boot 애플리케이션을 시작하는 데 도움이 필요하면 Spring Initializrhttps://start.spring.io/참조하세요.

간단한 Spring Boot 애플리케이션 만들기를 시작하는 방법에 대한 자세한 내용은 Spring Initializr를 참조하세요 https://start.spring.io/.

Azure에서 사용자 지정 Docker 이미지를 사용하는 방법에 대한 추가 예제는 Linux에서 Azure Web App에 대한 사용자 지정 Docker 이미지 사용을 참조하세요.