使用 Maven 将 Quarkus Web 应用部署到 Azure 应用服务
在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
先决条件
- Azure CLI,可以在本地使用或者通过 Azure Cloud Shell 使用。
- 一个受支持的 Java 开发工具包 (JDK)。 有关在 Azure 上进行开发时可供使用的 JDK 的详细信息,请参阅 Azure 和 Azure Stack 上的 Java 支持。
- Apache Maven 版本 3。
登录到 Azure CLI
让 Maven 插件部署 Quarkus 应用程序的最简单方法是使用 Azure CLI。
使用 Azure CLI 登录到 Azure 帐户:
az login
按照说明完成登录过程。
从 MicroProfile Starter 创建示例应用
在本部分中,将创建 Quarkus 应用程序并将其在本地测试。
创建 Java SE 8 基本项目
打开 Web 浏览器,并导航到 MicroProfile Starter 网站。
为指示的字段提供以下值:
字段 值 groupId com.microsoft.azure.samples.quarkus artifactId quarkus-hello-azure MicroProfile 版本 MP 3.2 Java SE 版本 Java 8 MicroProfile 运行时 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 应用服务配置 Maven 插件
在本部分中,将配置 Quarkus 项目 pom.xml 文件,以便 Maven 可以将应用部署到 Linux 上的 Azure 应用服务。
在代码编辑器中打开 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
出现提示时选择以下选项:
输入字段 输入/选择值 选择订阅 输入订阅 ID。 定义 OS 的值(默认值:Linux): 2. linux 定义 javaVersion 的值(默认值:Java 8): 2. Java 11 定义 pricingTier 的值(默认值:P1v2): 3. P1v2 确认(是/否) 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-jar,也称为 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 应用程序计划尚不存在,我们会为你创建一个。 在输出中显示的 URL 上显示 Web 应用程序可能需要几分钟时间。 在网页浏览器中打开网页地址。 应看到以下屏幕:
部署 Web 应用程序后,您可以通过 Azure 门户
您的 Web 应用程序被列入 MicroProfile 资源组。
可以通过在 Web 应用的概述页中选择浏览来访问 Web 应用程序。 验证部署是否成功且正在运行。
检查正在运行的应用服务中的日志流数据
可以使用以下命令查看正在运行的应用程序服务中的日志,或者使用 tail 命令进行查看。 对站点代码中 console.log
的任何调用都会显示在终端中。
az webapp log tail
--resource-group microprofile \
--name quarkus-hello-azure-1601011883156
清理资源
不再需要 Azure 资源时,请通过删除资源组来清理部署的资源。 为此,请按照以下步骤操作:
- 在 Azure 门户中,从菜单中选择 资源组。
- 在按名称筛选字段中输入 microprofile。 在本教程中创建的资源组应具有此前缀。
- 选择本教程中创建的资源组。
- 从菜单中选择 删除资源组。
后续步骤
若要了解有关 MicroProfile 和 Azure 的详细信息,请继续访问“Azure 上的 MicroProfile”文档中心。
其他资源
有关本文中讨论的各种技术的详细信息,请参阅以下文章: