다음을 통해 공유


Maven을 사용하여 Azure App Service에 Quarkus Web App 배포

이 빠른 시작에서는 Azure 앱 Service Web Apps용 Maven 플러그 인을 사용하여 Linux의 Azure 앱 Service에 Quarkus 애플리케이션을 배포합니다. 앱의 의존성, 런타임 및 구성을 배포 가능한 단일 아티팩트에 통합하려면 Tomcat 및 WAR 파일에 대해 Java SE 배포를 선택하는 것이 좋습니다.

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

필수 조건

Azure CLI에 로그인

Maven 플러그 인이 Quarkus 애플리케이션을 배포하도록 하는 가장 간단하고 쉬운 방법은 Azure CLI를 사용하는 것입니다.

Azure CLI를 사용하여 Azure 계정에 로그인합니다.

az login

지침에 따라 로그인 프로세스를 완료합니다.

MicroProfile Starter로 샘플 앱 만들기

이 섹션에서는 Quarkus 애플리케이션을 만들고 로컬로 테스트합니다.

Java SE 8 기본 프로젝트 만들기

  1. 웹 브라우저를 열고 MicroProfile Starter 사이트로 이동합니다.

    Quarkus 런타임이 선택된 MicroProfile Starter를 보여 주는 스크린샷

  2. 표시된 필드에 대해 다음 값을 제공합니다.

    필드
    groupId com.microsoft.azure.samples.quarkus
    artifactId quarkus-hello-azure
    MicroProfile 버전 MP 3.2
    Java SE 버전 Java 8
    MicroProfile 런타임 Quarkus
    사양 예제 메트릭, OpenAPI
  3. 다운로드를 선택하여 프로젝트를 다운로드합니다.

  4. 보관 파일의 압축을 풉 예를 들어:

    unzip Quarkus-hello-azure.zip
    

Java SE 11 기본 프로젝트 만들기

Java 11 기본 프로젝트를 만들려면 다음 명령을 사용합니다.

mvn io.quarkus:quarkus-maven-plugin:2.6.1.Final:create \
  -DprojectGroupId=com.microsoft.azure.samples.quarkus \
  -DprojectArtifactId=quarkus-hello-azure  \
  -DclassName="com.microsoft.azure.samples.quarkus.App" \
  -Dpath="/hello"

로컬 환경에서 애플리케이션 실행

  1. 디렉터리를 완료된 프로젝트로 변경합니다. 예를 들어:

    cd quarkus-hello-azure/
    
  2. Maven을 사용하여 프로젝트 빌드 및 실행 예를 들어:

    mvn quarkus:dev
    
  3. 웹 브라우저를 사용하여 로컬로 이동하여 웹 애플리케이션을 테스트합니다. 예를 들어, curl을 사용할 수 있는 경우 다음 명령을 사용할 수 있습니다.

    Java SE 8 프로젝트의 경우:

    curl http://localhost:8080/data/hello
    

    Java SE 11 프로젝트의 경우:

    curl localhost:8080/hello
    
  4. 다음 메시지가 표시됩니다. 헬로 월드 또는 hello

Azure 앱 Service용 Maven 플러그 인 구성

이 섹션에서는 Maven이 Azure App Service on Linux에 앱을 배포할 수 있도록 Quarkus 프로젝트 pom.xml 파일을 구성합니다.

  1. 코드 편집기에서 pom.xml 파일을 엽니다.

  2. <build> pom.xml 파일의 섹션에서 다음 <plugin> 항목을 태그 maven-surefire-plugin안에 <plugins> 삽입합니다.

    <plugin>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-webapp-maven-plugin</artifactId>
      <version>2.5.0</version>
    </plugin>
    
  3. 배포를 구성하려면 다음 Maven 명령을 실행합니다.

    mvn azure-webapp:config
    

    메시지가 표시되면 다음 옵션을 선택합니다.

    입력 필드 값 입력/선택
    구독을 선택합니다. 구독 ID를 입력합니다.
    OS에 대한 값 정의(기본값: Linux): 2. linux
    javaVersion에 대한 값 정의(기본값: Java 8): 2. Java 11
    pricingTier에 대한 값 정의(기본값: P1v2): 9. P1v2
    확인(Y/N) y

    이 명령은 다음 예제와 유사한 출력을 생성합니다.

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------< com.microsoft.azure.samples.quarkus:quarkus-hello-azure >-------
    [INFO] Building quarkus-hello-azure 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO]
    [INFO] --- azure-webapp-maven-plugin:2.5.0:config (default-cli) @ quarkus-hello-azure ---
    [INFO] Auth type: OAUTH2
    Username: abc@xyz.com
    Available subscriptions:
    *  1: Subscription1(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx)
       2: Subscription2(yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyy)
    Please choose a subscription [xxx]: 1
    [INFO] Subscription: Subscription1(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx)
    Define value for OS [Linux]:
      1: Windows
    * 2: Linux
      3: Docker
    Enter your choice: 2
    Define value for javaVersion [Java 8]:
    * 1: Java 8
      2: Java 11
      3: Java 17
    Enter your choice: 2
    Define value for pricingTier [P1v2]:
       1: B1
       2: B2
       3: B3
       4: D1
       5: EP1
       6: EP2
       7: EP3
       8: F1
    *  9: P1v2
      10: P1v3
      11: P2v2
      12: P2v3
      13: P3v2
      14: P3v3
      15: S1
      16: S2
      17: S3
      18: Y1
    Enter your choice: 9
    Please confirm webapp properties
    Subscription Id : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
    AppName : quarkus-hello-azure-1601011883156
    ResourceGroup : quarkus-hello-azure-1601011883156-rg
    Region : centralus
    PricingTier : P1v2
    OS : Linux
    Java : Java 11
    Web server stack: Java SE
    Deploy to slot : false
    Confirm (Y/N) [Y]:
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  16.502 s
    [INFO] Finished at: 2020-09-25T14:31:34+09:00
    [INFO] ------------------------------------------------------------------------
    
  4. 섹션을 <appSettings> , WEBSITES_PORTWEBSITES_CONTAINER_START_TIME_LIMIT.의 섹션에 PORT<configuration> 추가합니다. XML 항목 azure-webapp-maven-plugin 은 다음 예제와 유사합니다.

       <plugin>
         <groupId>com.microsoft.azure</groupId>
         <artifactId>azure-webapp-maven-plugin</artifactId>
         <version>2.5.0</version>
         <configuration>
           <schemaVersion>V2</schemaVersion>
           <resourceGroup>microprofile</resourceGroup>
           <appName>quarkus-hello-azure-1591836715762</appName>
           <pricingTier>P1v2</pricingTier>
           <region>centralus</region>
           <runtime>
             <os>linux</os>
             <javaVersion>java 11</javaVersion>
             <webContainer>java SE</webContainer>
           </runtime>
           <appSettings>
             <property>
               <name>PORT</name>
               <value>8080</value>
             </property>
             <property>
               <name>WEBSITES_PORT</name>
               <value>8080</value>
             </property>
             <property>
               <name>WEBSITES_CONTAINER_START_TIME_LIMIT</name>
               <value>600</value>
             </property>
           </appSettings>
           <deployment>
             <resources>
               <resource>
                 <directory>${project.basedir}/target</directory>
                 <includes>
                   <include>*.jar</include>
                 </includes>
               </resource>
             </resources>
           </deployment>
         </configuration>
       </plugin>
    
  5. src/기본/resources/application.properties 파일에 다음 항목을 추가하여 Uber(FAT) jar을 만듭니다.

    quarkus.package.type=uber-jar
    

Azure에 앱 배포

이 문서의 이전 섹션에서 모든 설정을 구성한 후에는 웹 애플리케이션을 Azure에 배포할 준비가 된 것입니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. pom.xml 파일을 변경한 경우 다음 명령을 사용하여 JAR 파일을 다시 빌드합니다.

    mvn clean package
    
  2. 다음 명령을 사용하여 웹앱을 Azure에 배포합니다.

    mvn azure-webapp:deploy
    

배포에 성공하면 다음 출력이 표시됩니다.

[INFO] Successfully deployed the artifact to https://quarkus-hello-azure-1591836715762.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:20 min
[INFO] Finished at: 2020-06-11T10:06:51+09:00
[INFO] ------------------------------------------------------------------------

Maven은 웹 애플리케이션을 Azure에 배포합니다. 웹 애플리케이션 또는 웹 애플리케이션 계획이 아직 없는 경우 웹 애플리케이션이 만들어집니다. 웹 애플리케이션이 출력에 표시된 URL에 표시되기까지 몇 분 정도 걸릴 수 있습니다. 웹 브라우저에서 URL로 이동합니다. 다음 화면이 표시됩니다.

Quarkus의 첫 페이지를 보여 주는 웹 브라우저의 스크린샷

웹 애플리케이션이 배포되면 Azure Portal통해 관리할 수 있습니다.

웹 애플리케이션이 마이크로프로파일 리소스 그룹에 나열됩니다.

웹앱의 개요 페이지에서 찾아보기를 선택하여 웹 애플리케이션에 액세스할 수 있습니다. 배포가 성공하고 실행 중인지 확인합니다.

실행 중인 App Service에서 로그 스트림 확인

실행 중인 App Service에서 로그를 확인(또는 "꼬리")할 수 있습니다. 사이트 코드에서 console.log에 대한 모든 호출은 터미널에 표시됩니다.

az webapp log tail 
    --resource-group microprofile \
    --name quarkus-hello-azure-1601011883156

로그 스트림을 보여 주는 터미널 창의 스크린샷

리소스 정리

Azure 리소스가 더 이상 필요하지 않은 경우 리소스 그룹을 삭제하여 배포한 리소스를 정리합니다.

  • Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
  • 이름 기준 필터 필드에 microprofile 을 입력합니다. 이 자습서에서 만든 리소스 그룹에는 이 접두사가 있어야 합니다.
  • 이 자습서에서 만든 리소스 그룹을 선택합니다.
  • 위쪽 메뉴에서 리소스 그룹 삭제를 선택합니다.

다음 단계

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

추가 리소스

이 문서에서 설명하는 다양한 기술에 대한 자세한 내용은 다음 문서를 참조하세요.