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

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

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

先决条件

登录 Azure CLI

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

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

az login

按照说明完成登录过程。

从 MicroProfile Starter 创建示例应用

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

创建 Java SE 8 基本项目

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

    显示 MicroProfile Starter 的屏幕截图,其中选择了 Kumuluz企业版 运行时。

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

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

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

    unzip kumuluzEE-hello-azure.zip
    

在本地环境中安装应用程序

  1. 将目录更改为已完成项目;例如:

    cd kumuluzEE-hello-azure/
    
  2. 使用 Maven 生成项目,例如:

    mvn clean package
    
  3. 使用以下命令运行该应用程序:

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

    curl http://localhost:8080/data/hello
    
  5. 应会看到以下消息: Hello World

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

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

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

  2. 在 pom.xml 文件的 <build> 部分,在 <plugins> 标记内插入以下 <plugin>

    <build>
      <finalName>kumuluzEE-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): 2. Java 8
    确认(是/否) y

    此命令会生成类似于以下示例的输出:

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ----< com.microsoft.azure.samples.kumuluzee:kumuluzEE-hello-azure >-----
    [INFO] Building kumuluzEE-hello-azure 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO]
    [INFO] --- azure-webapp-maven-plugin:1.10.0:config (default-cli) @ kumuluzEE-hello-azure ---
    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: 2
    Please confirm webapp properties
    AppName : kumuluzEE-hello-azure-1601006602397
    ResourceGroup : kumuluzEE-hello-azure-1601006602397-rg
    Region : westeurope
    PricingTier : PremiumV2_P1v2
    OS : Linux
    RuntimeStack : JAVA 8-jre8
    Deploy to slot : false
    Confirm (Y/N)? : y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  44.223 s
    [INFO] Finished at: 2020-09-25T13:04:02+09:00
    [INFO] ------------------------------------------------------------------------
    
  4. 将节添加到 <configuration> WEBSITES_PORT/> <appSettings> 的节PORTWEBSITES_CONTAINER_START_TIME_LIMIT。 你的 azure-webapp-maven-plugin XML 条目将类似于以下示例:

    <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>kumuluzEE-hello-azure-1601006602397</appName>
        <pricingTier>P1v2</pricingTier>
        <region>japaneast</region>
        <runtime>
          <os>linux</os>
          <javaVersion>jre8</javaVersion>
          <webContainer>jre8</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>
    

将应用部署到 Azure

配置本文前面部分的所有设置后,即可将 Web 应用部署到 Azure。 为此,请按照以下步骤操作:

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

    mvn clean package
    
  2. 使用 Maven 将 Web 应用部署到 Azure;例如:

    mvn azure-webapp:deploy
    

如果部署成功,你将看到以下输出。

[INFO] Successfully deployed the artifact to https://kumuluzee-hello-azure-1601006602397.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:23 min
[INFO] Finished at: 2020-09-25T13:13:14+09:00
[INFO] ------------------------------------------------------------------------

Maven 会将 Web 应用部署到 Azure。 如果 Web 应用或 Web 应用计划尚不存在,则会为你创建它。 可能需要等待数分钟,然后才能通过输出中显示的 URL 查看 Web 应用。 在 Web 浏览器中导航到该 URL。 应该会看到以下屏幕。

显示 Kumuluz企业版首页的 Web 浏览器的屏幕截图。

部署 Web 后,可以通过Azure 门户对其进行管理

Web 应用将列在 microprofile 资源组中

可以通过在 Web 应用的“概述”页上选择“浏览来访问 Web 应用。 验证部署成功并且正在运行。

从正在运行的App 服务确认日志流

你可以查看(或“跟踪”)来自正在运行的应用服务的日志。 在站点代码中对 console.log 的任何调用都将显示在终端中。

az webapp log tail \
    --resource-group microprofile \
    --name kumuluzEE-hello-azure-1601006602397

显示日志流的终端窗口的屏幕截图。

清理资源

不再需要 Azure 资源时,请通过删除资源组来清理部署的资源。

  • 在 Azure 门户上的左侧菜单中选择“资源组” 。
  • 在“按名称筛选”字段中输入 microprofile,在本教程中创建的资源组应具有此前缀
  • 选择在本教程中创建的资源组。
  • 在顶部菜单中选择“删除资源组”。

后续步骤

若要了解有关 MicroProfile 和 Azure 的详细信息,请继续访问“Azure 上的 MicroProfile”文档中心。

其他资源

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