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

在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件 将 KumuluzEE 应用程序部署到 Linux上的 Azure 应用服务 。 当您想要将应用程序的依赖项、运行时和配置合并到单个可部署工件中时,您可以选择 Java SE 部署而不是 Tomcat 和 WAR 文件

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

先决条件

  • Azure CLI,可以在本地使用或者通过 Azure Cloud Shell 使用。
  • 支持的 Java 开发工具包(JDK)。 有关在 Azure 上进行开发时可用的 JDK 的详细信息,请参阅 Azure 和 Azure Stack上的 Java 支持。
  • Apache Maven版本 3。

登录到 Azure CLI

获取用于部署 KumuluzEE 应用程序的 Maven 插件的最简单、最轻松的方法是使用 Azure CLI。 使用 Azure CLI 登录到 Azure 帐户:

az login

按照说明完成登录过程。

从 MicroProfile Starter 创建示例应用

在本部分中,将创建 KumuluzEE 应用程序并将其在本地测试。

创建 Java SE 8 基本项目

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

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

  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 应用以便进行测试。 例如,如果 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/N) 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. <appSettings> 节添加到 PORTWEBSITES_PORTWEBSITES_CONTAINER_START_TIME_LIMIT<configuration> 节。 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. 在前面使用的命令提示符或终端窗口中,使用 Maven 重新生成 JAR 文件(如果对 pom.xml 文件进行了任何更改,请使用以下命令:

    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 应用程序计划尚不存在,则会为您创建。 Web 应用可能需要几分钟时间才能在输出中显示的 URL 上可见。 在网页浏览器中打开该 URL。 应看到以下屏幕:

Web 浏览器的屏幕截图,其中显示了 KumuluzEE 首页。

部署 Web 应用后,可以通过 Azure 门户对其进行管理。 您的 Web 应用列在 microprofile 资源组中。

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

确认正在运行的应用程序服务的日志流

您可以使用以下命令查看或跟踪正在运行的应用程序服务的日志。 站点代码中对 console.log 的任何调用都显示在终端中。

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

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

清理资源

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

  1. 在 Azure 门户中,从菜单中选择 资源组
  2. 按名称过滤字段中输入 microprofile。 在本教程中创建的资源组应具有此前缀。
  3. 选择在本教程中创建的资源组。
  4. 从菜单中选择 删除资源组

后续步骤

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

其他资源

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