Azure App Services

本章节我们将介绍如何将 Jmix 应用程序部署至 Azure App Services 云服务。

开始之前,请先创建 Microsoft Azure 账号和 Azure DevOps 账号,确保能访问 Azure 门户

我们将使用 PostgreSQL 数据库。

创建 Azure 环境

从 Azure 门户启动 Azure Cloud Shell,开始创建资源组:

az group create --name MyJmixGroup1 --location eastus

然后,创建一个 PostgreSQL 服务。这里的 sku 表示 Stock Keeping Unit,因此 --sku-name GP_Gen5_2 映射至 General Purpose 定价层,Generation 5,2 个虚拟核心。在命令中设置你自己的数据库凭证:

az postgres server create --resource-group MyJmixGroup1 --name myjmixpostgres1 --admin-user jmixadmin --admin-password ChangeMe@42 --sku-name GP_Gen5_2

请记录密码,Azure 的其他地方是查不到的。

在门户网页中,切换至 myjmixpostgres1,打开 Connection security,设置 Allow access to Azure servicesYes,并点击 Save

Jmix 项目设置

如需在开发时使用本地 PostgreSQL 数据库,则数据存储的设置和 application.properties 需要包含本地数据库的参数,例如:

main.datasource.url = jdbc:postgresql://localhost/demo
main.datasource.username = root
main.datasource.password = root

Azure PostgreSQL 连接参数应该在 Gradle 任务配置中设置,下面会介绍。

打开 build.gradle 并在 plugins 部分添加 Azure WebApp 的 Gradle 插件:

plugins {
    // ...
    id "com.microsoft.azure.azurewebapp" version "1.2.0"
}

然后添加 azurewebapp 任务,需要配置 Azure 参数和凭证:

azurewebapp {
    subscription = '<your-subscription-id>'
    resourceGroup = 'MyJmixGroup1' (1)
    appServicePlanName = 'MyJmixPlan1' (2)
    appName = 'MyJmixApp1' (3)
    pricingTier = 'P1v2'
    region = 'eastus'
    runtime {
        os = 'Linux'
        webContainer = 'Java SE' (4)
        javaVersion = 'Java 17' (5)
    }
    appSettings { (6)
        put('main.datasource.url', 'jdbc:postgresql://myjmixpostgres1.postgres.database.azure.com:5432/postgres')
        put('main.datasource.username', 'jmixadmin@myjmixpostgres1')
        put('main.datasource.password', 'ChangeMe@42')
    }
}
1 在 Azure 门户中创建的资源组。
2 App service plan,会在第一次部署时自动创建。
3 App 名称,将用于应用程序的 URL 地址。
4 Spring Boot 可执行 JAR 的容器。
5 Java 版本必须要与编译应用程序的版本一致。
6 appSettings 部分可以设置应用程序部署时用于连接 Azure PostgreSQL 的环境变量。这里 myjmixpostgres1 是上面创建的 PostgreSQL 服务名称。

现在可以用下面的命令将应用程序部署至 Azure:

./gradlew azureWebAppDeploy

如果部署成功,可以通过 https://myjmixapp1.azurewebsites.net 地址访问应用程序。

如果 Gradle 运行出错,则添加 --stacktrace 选项再运行一次检查详细错误:

./gradlew azureWebAppDeploy --stacktrace

如需 启动应用程序日志,在门户中打开 App,并选择 App Service logs。在 Application logging 字段,选择 File System 并点击 Save。之后,从命令行重新部署应用程序或通过门户的 App 概览界面重启应用。

如需查看或下载日志,在门户中打开 App 页面,选择 Diagnose and solve problemsAvailability and PerformanceApplication Logs