共用方式為


使用 Maven 將 Quarkus Web 應用程式部署至 Azure App Service

在本快速入門中,您將使用適用於 Azure App Service Web Apps 的 Maven 外掛程式,將 Quarkus 應用程式部署至 Linux 上的 Azure App Service 。 當您要將應用程式的相依性、運行環境和配置整合到單一可部署成品時,您會選擇 Java SE 部署而不是 Tomcat 和 WAR 檔案。

如果您沒有 Azure 訂用帳戶,請在開始之前建立 免費帳戶

先決條件

登入到 Azure CLI

最簡便的方法來讓 Maven 外掛程式部署你的 Quarkus 應用程式,是使用 Azure CLI

使用 Azure CLI 登入您的 Azure 帳戶:

az login

請遵循指示來完成登入程式。

從 MicroProfile Starter 建立範例應用程式

在本節中,您將建立Quarkus應用程式並在本機進行測試。

建立 Java SE 8 基底專案

  1. 開啟網頁瀏覽器並流覽至 MicroProfile Starter 網站。

    MicroProfile Starter 的螢幕快照,顯示 Quarkus 執行環境已被選取。

  2. 為指定的欄位提供下列值。

    價值
    群組ID com.microsoft.azure.samples.quarkus
    artifactId quarkus-hello-azure
    MicroProfile 版本 MP 3.2
    Java SE 版本 Java 8
    MicroProfile Runtime 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. 使用網頁瀏覽器在本機瀏覽,以測試 Web 應用程式。 例如,如果您有 curl 可用,您可以使用下列命令:

    針對 Java SE 8 專案:

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

    針對 Java SE 11 專案:

    curl http://localhost:8080/hello
    
  4. 您應該會看到下列訊息顯示:Hello Worldhello

設定適用於 Azure App Service 的 Maven 外掛程式

在本節中,您將設定 Quarkus 專案 pom.xml 檔案,讓 Maven 可以將應用程式部署至 Linux 上的 Azure App Service。

  1. 在程式代碼編輯器中開啟 pom.xml 檔案。

  2. pom.xml 檔案的 <build> 區段中,於 maven-surefire-plugin之後,在 <plugins> 標籤內插入下列 <plugin> 項目。

    <plugin>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-webapp-maven-plugin</artifactId>
      <version>2.13.0</version>
    </plugin>
    
  3. 若要設定部署,請執行下列 Maven 命令:

    mvn azure-webapp:config
    

    出現提示時,請選取下列選項:

    輸入欄位 輸入/選取值
    選擇訂用帳戶 輸入您的訂用帳戶標識碼。
    定義 OS 的值(預設值:Linux): 2. linux
    定義 javaVersion 的值(預設值:Java 8): 2. Java 11
    定義 pricingTier 的值(預設值:P1v2): 3. 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.13.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: D1
      2: B3
    * 3: P1v2
      4: P1v3
      5: P2v2
      6: P2v3
      7: P3v2
      8: P3v3
      9: B1
     10: B2
     11: F1
     12: S1
     13: S2
     14: S3
     15: EP3
     16: EP2
     17: EP1
     18: Y1
     19: FC1
    Enter your choice: 3
    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>] 區段新增至 PORTWEBSITES_PORTWEBSITES_CONTAINER_START_TIME_LIMIT<configuration> 區段。 azure-webapp-maven-plugin 的 XML 項目看起來會類似下列範例:

       <plugin>
         <groupId>com.microsoft.azure</groupId>
         <artifactId>azure-webapp-maven-plugin</artifactId>
         <version>2.13.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/main/resources/application.properties 檔案,以建立Uber (FAT) jar。

    quarkus.package.type=uber-jar
    

將應用程式部署至 Azure

在本文前幾節中設定所有設定之後,您就可以將 Web 應用程式部署至 Azure。 若要這樣做,請使用下列步驟:

  1. 如果您對 pom.xml 檔案進行任何變更,請使用下列命令重建 JAR 檔案:

    mvn clean package
    
  2. 使用下列命令將 Web 應用程式部署至 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 會將 Web 應用程式部署至 Azure。 如果 Web 應用程式或 Web 應用程式方案尚未存在,將會為您建立它。 可能需要幾分鐘的時間,Web 應用程式才會在輸出所顯示的 URL 可見。 導航至網頁瀏覽器中的 URL。 您應該會看到下列畫面。

顯示Quarkus首頁之網頁瀏覽器的螢幕快照。

部署 Web 應用程式之後,您可以透過 Azure 入口網站管理它

您的 Web 應用程式將會列在 microprofile 資源群組中。

您可以在 Web 應用程式的 [概觀] 頁面中選擇 [瀏覽] 以存取您的 Web 應用程式。 確認部署成功且正在執行。

從執行中的 App Service 確認記錄數據流

您可以查看來自執行中的 App Service 的記錄檔(或「tail」)。 站點代碼中的 console.log 的任何呼叫都會顯示在終端中。

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

顯示記錄數據流的終端機視窗螢幕快照。

清除資源

當不再需要 Azure 資源時,請刪除資源群組來清除您部署的資源。

  • 從 Azure 入口網站,從左側功能表中選取 [資源群組]。
  • [依名稱篩選] 字段中輸入 microprofile,本教學課程中建立的資源群組應以此作為字首。
  • 選取在本教學課程中建立的資源群組。
  • 從頂端功能表中選取 [刪除資源群組]。

後續步驟

若要深入瞭解 MicroProfile 和 Azure,請繼續前往 Azure 上的 MicroProfile 檔中心。

Azure 上的 MicroProfile

其他資源

如需本文所討論各種技術的詳細資訊,請參閱下列文章: