使用 Maven 將 Quarkus Web 應用程式部署至 Azure App Service
在本快速入門中,您將使用適用於 Azure App Service Web Apps 的 Maven 外掛程式,將 Quarkus 應用程式部署至 Linux 上的 Azure App Service 。 當您要將應用程式的相依性、運行環境和配置整合到單一可部署成品時,您會選擇 Java SE 部署而不是 Tomcat 和 WAR 檔案。
如果您沒有 Azure 訂用帳戶,請在開始之前建立 免費帳戶。
先決條件
- Azure CLI,可以在本機或透過 Azure Cloud Shell 使用。
- 支援的 Java 開發工具套件 (JDK)。 如需在 Azure 上開發時可用的 JDK 詳細資訊,請參閱 Azure 上的 Java 支援和 Azure Stack。
- Apache Maven第 3 版。
登入到 Azure CLI
最簡便的方法來讓 Maven 外掛程式部署你的 Quarkus 應用程式,是使用 Azure CLI。
使用 Azure CLI 登入您的 Azure 帳戶:
az login
請遵循指示來完成登入程式。
從 MicroProfile Starter 建立範例應用程式
在本節中,您將建立Quarkus應用程式並在本機進行測試。
建立 Java SE 8 基底專案
開啟網頁瀏覽器並流覽至 MicroProfile Starter 網站。
為指定的欄位提供下列值。
田 價值 群組ID com.microsoft.azure.samples.quarkus artifactId quarkus-hello-azure MicroProfile 版本 MP 3.2 Java SE 版本 Java 8 MicroProfile Runtime Quarkus 規格的範例 計量、OpenAPI 按下 [下載] 以下載專案。
解壓縮壓縮檔案;例如:
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"
在本地端環境中執行應用程式
將目錄變更為已完成的專案;例如:
cd quarkus-hello-azure/
使用 Maven 建置並執行專案;例如:
mvn quarkus:dev
使用網頁瀏覽器在本機瀏覽,以測試 Web 應用程式。 例如,如果您有 curl 可用,您可以使用下列命令:
針對 Java SE 8 專案:
curl http://localhost:8080/data/hello
針對 Java SE 11 專案:
curl http://localhost:8080/hello
您應該會看到下列訊息顯示:Hello World 或 hello
設定適用於 Azure App Service 的 Maven 外掛程式
在本節中,您將設定 Quarkus 專案 pom.xml 檔案,讓 Maven 可以將應用程式部署至 Linux 上的 Azure App Service。
在程式代碼編輯器中開啟 pom.xml 檔案。
在 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>
若要設定部署,請執行下列 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] ------------------------------------------------------------------------
將 [
<appSettings>
] 區段新增至PORT
、WEBSITES_PORT
和WEBSITES_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>
將下列條目新增至 src/main/resources/application.properties 檔案,以建立Uber (FAT) jar。
quarkus.package.type=uber-jar
將應用程式部署至 Azure
在本文前幾節中設定所有設定之後,您就可以將 Web 應用程式部署至 Azure。 若要這樣做,請使用下列步驟:
如果您對 pom.xml 檔案進行任何變更,請使用下列命令重建 JAR 檔案:
mvn clean package
使用下列命令將 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。 您應該會看到下列畫面。
部署 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 上的
其他資源
如需本文所討論各種技術的詳細資訊,請參閱下列文章:
適用於 Azure Web Apps 的 Maven 外掛程式
使用 Azure CLI 2.0 建立 Azure 服務主體