Quarkus 웹 애플리케이션을 Azure App Service에서 실행

요 전날 Java 웹 프레임 워크 "Helidon"을 Azure App Service에서 실행했습니다. 오늘은 Quarkus을 시도합니다.

로컬 환경에서 실행



Helidon 때와 같은 환경 을 사용했습니다.
  • 도커

  • Visual Studio Code
  • Visual Studio Code Remote - Containers
  • Docker for Visual Studio Code
  • Java Extension Pack


  • 사용한 dockerfile은 다음과 같습니다.
    FROM maven:3.8.1-openjdk-11
    
    RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash
    

    이번에도 MicroProfile Starter 에서 프로젝트의 병아리를 만들었습니다.



    빌드합니다.
    mvn clean package
    

    실행합니다.
    java -jar target/demo.jar
    

    아래의 표시가 되었습니다.





    Azure에서 실행



    그런 다음 Azure에 배포할 준비입니다. 먼저 Azure CLI로 로그인합니다.
    az login
    

    그런 다음 pom.xml의 build 섹션에 다음을 추가합니다.
    <plugin>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-webapp-maven-plugin</artifactId>
        <version>1.13.0</version>
    </plugin>
    

    다음 명령을 실행합니다.
    mvn com.microsoft.azure:azure-webapp-maven-plugin:1.13.0:config
    

    대화식으로 구성을 듣기 때문에 리눅스, 자바 8을 선택했습니다.

    처음 이대로 배포했는데 Quarkus가 제대로 시작되지 않았고 다음 오류가 기록되었습니다.
    Caused by: java.lang.ClassNotFoundException: io.quarkus.runtime.Quarkus
    

    조사한 결과 다음 정보가있었습니다.

    지금은 잘 모르겠습니다만, Fat Jar가 되어 있지 않은 것 같은? application.properties에 다음을 추가하여 무사히 Azure에서 Quarkus를 시작했습니다.
    quarkus.package.uber-jar=true
    

    그리고 손으로 appSettings를 추가하고 있습니다. 이것이 없으면 Quarkus가 실행 중이지만 게시 된 URL에 액세스 할 수 없었습니다.
    <plugins> 
      <plugin> 
        <groupId>com.microsoft.azure</groupId>  
        <artifactId>azure-webapp-maven-plugin</artifactId>  
        <version>1.14.0</version>  
        <configuration> 
          <schemaVersion>v2</schemaVersion>  
          <subscriptionId>xxxxx</subscriptionId>  
          <resourceGroup>demo-xxxxxxxxxxx-rg</resourceGroup>  
          <appName>demo-xxxxxxxxxx</appName>  
          <pricingTier>P1v2</pricingTier>  
          <region>westeurope</region>  
          <runtime> 
            <os>Linux</os>  
            <javaVersion>Java 8</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>900</value> 
            </property> 
          </appSettings>  
          <deployment> 
            <resources> 
              <resource> 
                <directory>${project.basedir}/target</directory>  
                <includes> 
                  <include>*.jar</include> 
                </includes> 
              </resource> 
            </resources> 
          </deployment> 
        </configuration> 
      </plugin> 
    </plugins> 
    

    안전하게 로컬 환경처럼 표시되었습니다.



    좋은 웹페이지 즐겨찾기