使用 Maven 将 Helidon Web 应用部署到 Azure 应用服务
在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件将 Helidon 应用程序部署到 Linux 上的 Azure 应用服务。 如果要将应用的依赖项、运行时和配置整合到单个可部署项目中,你需要选择通过 Tomcat 和 WAR 文件进行 Java SE 部署。
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
先决条件
- Azure CLI,在本地或通过 Azure Cloud Shell。
- 一个受支持的 Java 开发工具包 (JDK)。 有关在 Azure 上进行开发时可供使用的 JDK 的详细信息,请参阅 Azure 和 Azure Stack 上的 Java 支持。
- Apache Maven 版本 3。
登录 Azure CLI
获取用于部署 Helidon 应用程序的 Maven 插件最简单的方法是使用 Azure CLI。
通过使用 Azure CLI 登录到 Azure 帐户:
az login
按照说明完成登录过程。
从 MicroProfile Starter 创建示例应用
在本部分中,你将创建一个 Helidon 应用程序并在本地测试它。
打开 Web 浏览器并导航到 MicroProfile Starter 站点。
输入或选择字段,如下所示。
字段 值 groupId com.microsoft.azure.samples.helidon artifactId helidon-hello-azure MicroProfile 版本 MP 3.2 Java SE 版本 Java 11 MicroProfile 运行时 Helidon 规范示例 指标,OpenAPI 选择“下载”以下载项目。
解压缩存档文件,例如:
unzip helidon-hello-azure.zip
你也可以使用以下命令创建项目:
mvn -U archetype:generate -DinteractiveMode=false \ -DarchetypeGroupId=io.helidon.archetypes \ -DarchetypeArtifactId=helidon-quickstart-se \ -DarchetypeVersion=2.0.0 \ -DgroupId=com.microsoft.azure.samples.helidon \ -DartifactId=helidon-hello-azure \ -Dpackage=com.microsoft.azure.samples.helidon
将目录更改为已完成项目;例如:
cd helidon-hello-azure/
使用 Maven 生成 JAR 文件;例如:
mvn clean package
创建 Web 应用后,使用 Maven 启动 Web 应用;例如:
java -jar target/helidon-hello-azure.jar
使用 Web 浏览器在本地浏览到 Web 应用并对其进行测试。 例如,如果有可用的 Curl,可以使用以下命令:
curl http://localhost:8080/greet
应看到以下消息显示: Hello World
配置适用于 Azure 应用服务的 Maven 插件
在本部分中,你将配置 Helidon 项目的 pom.xml 文件,以便 Maven 可以将应用部署到 Linux 上的 Azure 应用服务。
在代码编辑器中打开 pom.xml 文件。
在 pom.xml 文件的
<build>
部分,在<plugins>
标记内插入以下<plugin>
项。<build> <finalName>helidon-hello-azure</finalName> <plugins> <plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>1.10.0</version> </plugin> </plugins> </build>
然后,可以配置部署,运行以下 Maven 命令:
mvn azure-webapp:config
出现提示时选择以下选项:
输入字段 输入/选择值 定义 OS 的值(默认值:Linux): 1. Linux 定义 javaVersion 的值(默认值:Java 8): 1. Java 11 确认(是/否) y 此命令会生成类似于以下示例的输出:
[INFO] Scanning for projects... [INFO] [INFO] ------< com.microsoft.azure.samples.helidon:helidon-hello-azure >------- [INFO] Building myproject 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:1.10.0:config (default-cli) @ helidon-hello-azure --- Define value for OS(Default: Linux): 1. linux [*] 2. windows 3. docker Enter index to use: 1 Define value for javaVersion(Default: Java 8): 1. Java 11 2. Java 8 [*] Enter index to use: 1 Please confirm webapp properties AppName : helidon-hello-azure-1600998900939 ResourceGroup : helidon-hello-azure-1600998900939-rg Region : westeurope PricingTier : PremiumV2_P1v2 OS : Linux RuntimeStack : JAVA 11-java11 Deploy to slot : false Confirm (Y/N)? : y [INFO] Saving configuration to pom. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 02:44 min [INFO] Finished at: 2020-09-25T10:57:35+09:00 [INFO] ------------------------------------------------------------------------
将节添加到
<configuration>
WEBSITES_PORT/> <appSettings>
的节PORT
和WEBSITES_CONTAINER_START_TIME_LIMIT
。 将资源<include>/libs/*.jar</include>
添加到部署中的资源。<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>1.10.0</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>microprofile</resourceGroup> <appName>helidon-hello-azure-1591663020899</appName> <pricingTier>P1v2</pricingTier> <region>japaneast</region> <runtime> <os>linux</os> <javaVersion>java11</javaVersion> <webContainer>java11</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> <include>/libs/*.jar</include> </includes> </resource> </resources> </deployment> </configuration>
将应用部署到 Azure
配置本文前面部分的所有设置后,即可将 Web 应用部署到 Azure。 为此,请按照以下步骤操作:
在之前使用的命令提示符或终端窗口中,如果对 pom.xml 文件进行了任何更改,请使用 Maven 重新生成 JAR 文件;例如:
mvn clean package
使用 Maven 将 Web 应用部署到 Azure;例如:
mvn azure-webapp:deploy
Maven 会将 Web 应用部署到 Azure。 如果 Web 应用或 Web 应用计划尚不存在,则会为你创建它。 可能需要等待数分钟,然后才能通过输出中显示的 URL 查看 Web 应用。 在 Web 浏览器中导航到该 URL。 应会看到显示的消息: Hello World
部署 Web 后,可以通过Azure 门户对其进行管理。
Web 应用将在App 服务中列出。
可以通过在 Web 应用的“概述”页上选择“浏览”来访问 Web 应用。
使用来自门户的 Web 应用 URL(而不是 localhost
),通过以前所用的 cURL 命令(/data/hello
)验证部署是否成功。 应看到以下消息显示: Hello World
从正在运行的App 服务确认日志流
你可以查看(或“跟踪”)来自正在运行的应用服务的日志。 在站点代码中对 console.log
的任何调用都将显示在终端中。
az webapp log tail \
--resource-group microprofile \
--name helidon-hello-azure-1600998900939
清理资源
不再需要 Azure 资源时,请通过删除资源组来清理部署的资源。
- 在 Azure 门户上的左侧菜单中选择“资源组” 。
- 在“按名称筛选”字段中输入 microprofile,在本教程中创建的资源组应具有此前缀。
- 选择在本教程中创建的资源组。
- 在顶部菜单中选择“删除资源组”。
后续步骤
若要了解有关 MicroProfile 和 Azure 的详细信息,请继续访问“Azure 上的 MicroProfile”文档中心。
其他资源
有关本文中讨论的各项技术的详细信息,请参阅以下文章: