使用 Maven 将 Helidon Web 应用部署到 Azure 应用服务

在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件将 Helidon 应用程序部署到 Linux 上的 Azure 应用服务。 如果要将应用的依赖项、运行时和配置整合到单个可部署项目中,你需要选择通过 Tomcat 和 WAR 文件进行 Java SE 部署。

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

先决条件

登录 Azure CLI

获取用于部署 Helidon 应用程序的 Maven 插件最简单的方法是使用 Azure CLI

通过使用 Azure CLI 登录到 Azure 帐户:

az login

按照说明完成登录过程。

从 MicroProfile Starter 创建示例应用

在本部分中,你将创建一个 Helidon 应用程序并在本地测试它。

  1. 打开 Web 浏览器并导航到 MicroProfile Starter 站点。

    显示选择了 Helidon 运行时的 MicroProfile Starter 的屏幕截图。

  2. 输入或选择字段,如下所示。

    字段
    groupId com.microsoft.azure.samples.helidon
    artifactId helidon-hello-azure
    MicroProfile 版本 MP 3.2
    Java SE 版本 Java 11
    MicroProfile 运行时 Helidon
    规范示例 指标,OpenAPI
  3. 选择“下载以下载项目。

  4. 解压缩存档文件,例如:

    unzip helidon-hello-azure.zip
    
  5. 你也可以使用以下命令创建项目:

    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
    
  6. 将目录更改为已完成项目;例如:

    cd helidon-hello-azure/
    
  7. 使用 Maven 生成 JAR 文件;例如:

    mvn clean package
    
  8. 创建 Web 应用后,使用 Maven 启动 Web 应用;例如:

    java -jar target/helidon-hello-azure.jar
    
  9. 使用 Web 浏览器在本地浏览到 Web 应用并对其进行测试。 例如,如果有可用的 Curl,可以使用以下命令:

    curl http://localhost:8080/greet
    
  10. 应看到以下消息显示: Hello World

配置适用于 Azure 应用服务的 Maven 插件

在本部分中,你将配置 Helidon 项目的 pom.xml 文件,以便 Maven 可以将应用部署到 Linux 上的 Azure 应用服务

  1. 在代码编辑器中打开 pom.xml 文件

  2. 在 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>
    
  3. 然后,可以配置部署,运行以下 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] ------------------------------------------------------------------------
    
  4. 将节添加到 <configuration> WEBSITES_PORT/> <appSettings> 的节PORTWEBSITES_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。 为此,请按照以下步骤操作:

  1. 在之前使用的命令提示符或终端窗口中,如果对 pom.xml 文件进行了任何更改,请使用 Maven 重新生成 JAR 文件;例如

    mvn clean package
    
  2. 使用 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”文档中心。

其他资源

有关本文中讨论的各项技术的详细信息,请参阅以下文章: