本快速入门演示如何将 Spring Boot Web 应用程序部署到 Azure Spring Apps。 示例项目是一个简单的 ToDo 应用程序,用于添加任务、完成时标记任务,然后删除任务。 以下屏幕截图显示了该应用程序:
此应用程序是具有以下层的典型三层 Web 应用程序:
- 前端受限的 React 应用程序。
- 使用 Spring Data JPA 访问关系数据库的后端 Spring Web 应用程序。
- 关系数据库。 对于 localhost,该应用程序使用 H2 数据库引擎。 对于 Azure Spring Apps,该应用程序使用 Azure Database for PostgreSQL。 有关 Azure Database for PostgreSQL 的详细信息,请参阅灵活服务器文档。
下图显示了系统的体系结构:
本文介绍用于部署到 Azure Spring Apps 的以下选项:
- “Azure 门户”选项是创建资源和部署应用程序的最简单、最快的方式,只需点击一下即可。 此选项适用于需要将应用程序快速部署到 Azure 云服务的 Spring 开发人员。
- “Azure 门户 + Maven 插件”选项提供了一种更为传统的方法,可用于分步创建资源和部署应用程序。 此选项适合首次使用 Azure 云服务的 Spring 开发人员。
- “Azure Developer CLI”选项是一种更高效的方法,可通过简单的命令自动创建资源和部署应用程序。 Azure Developer CLI 使用模板来预配所需的 Azure 资源并部署应用程序代码。 此选项适合熟悉 Azure 云服务的 Spring 开发人员。
本文介绍用于部署到 Azure Spring Apps 的以下选项:
- “Azure 门户”选项是创建资源和部署应用程序的最简单、最快的方式,只需点击一下即可。 此选项适用于需要将应用程序快速部署到 Azure 云服务的 Spring 开发人员。
- “Azure 门户 + Maven 插件”选项提供了一种更为传统的方法,可用于分步创建资源和部署应用程序。 此选项适合首次使用 Azure 云服务的 Spring 开发人员。
- “Azure CLI”选项使用功能强大的命令行工具管理 Azure 资源。 此选项适合熟悉 Azure 云服务的 Spring 开发人员。
1.先决条件
- Azure 订阅。 如果你没有订阅,请在开始之前创建一个免费帐户。
- Azure 订阅。 如果你没有订阅,请在开始之前创建一个免费帐户。
2. 准备 Spring 项目
尽管你会在后面的步骤中使用 Azure 门户,但必须使用 Bash 命令行在本地准备项目。 使用以下步骤在本地克隆和运行应用:
使用以下命令从 GitHub 克隆示例项目:
git clone https://github.com/Azure-Samples/ASA-Samples-Web-Application.git
使用以下命令通过 Maven 生成示例项目:
cd ASA-Samples-Web-Application
./mvnw clean package
使用以下命令运行示例应用程序:
java -jar web/target/simple-todo-web.jar
在浏览器中转到 http://localhost:8080
以访问此应用程序。
使用以下步骤在本地克隆和运行该应用:
使用以下命令从 GitHub 克隆示例项目:
git clone https://github.com/Azure-Samples/ASA-Samples-Web-Application.git
使用以下命令通过 Maven 生成示例项目:
cd ASA-Samples-Web-Application
./mvnw clean package
使用以下命令运行示例应用程序:
java -jar web/target/simple-todo-web.jar
在浏览器中转到 http://localhost:8080
以访问此应用程序。
3. 准备云环境
运行此示例所需的主要资源是 Azure Spring Apps 实例和 Azure Database for PostgreSQL 实例。 本部分提供创建这些资源的步骤。
本部分使用“部署到 Azure”按钮在 Azure 门户中启动部署体验。 此体验使用 ARM 模板来创建 Azure 资源。
3.1. 登录到 Azure 门户
转到 Azure 门户,输入登录到门户所需的凭据。 默认视图是服务仪表板。
3.2. 创建 Azure 资源
按以下步骤创建应用依赖的所有 Azure 资源:
选择以下“部署到 Azure”按钮在 Azure 门户中启动部署体验:
填写“基本信息”选项卡上的表单。填写表单时,请参考下表:
设置 |
建议的值 |
描述 |
订阅 |
你的订阅名称。 |
要用于服务器的 Azure 订阅。 如果你有多个订阅,请选择要计费的资源所在的订阅。 |
资源组 |
myresourcegroup |
新的资源组名称,或订阅中的现有资源组。 |
区域 |
离用户最近的区域。 |
此区域用于创建资源组。 |
Postgre SQL 管理员密码 |
不可用 |
PostgreSQL 服务器管理员的密码。 |
Postgre SQL 用户密码 |
不可用 |
在应用程序中使用的 PostgreSQL 应用程序用户的密码。 |
选择“查看 + 创建”,查看所选内容。 然后选择“创建”将应用部署到 Azure Spring Apps。
在工具栏上选择“通知”图标(铃铛)以监视部署过程。 完成部署后,可以选择“固定到仪表板”,以便在 Azure 门户仪表板上为此服务创建磁贴作为前往此服务的“概述”页的快捷方式。 选择“转到资源”以打开服务的“概述”页。
3.1. 登录到 Azure 门户
转到 Azure 门户,输入凭据以登录到门户。 默认视图是服务仪表板。
3.2. 创建 Azure Spring Apps 实例
请执行以下步骤来创建服务实例:
在 Azure 门户一角选择“创建资源”。
选择“计算>Azure Spring Apps”。
填写“基本”表单,其中包含以下信息:
设置 |
建议的值 |
描述 |
订阅 |
你的订阅名称。 |
要用于服务器的 Azure 订阅。 如果你有多个订阅,请选择要计费的资源所在的订阅。 |
资源组 |
myresourcegroup |
新的资源组名称,或订阅中的现有资源组。 |
名称 |
myasa |
用于标识 Azure Spring Apps 服务的唯一名称。 该名称必须为 4 到 32 个字符,只能包含小写字母、数字及连字符。 服务名称的第一个字符必须是字母,最后一个字符必须是字母或数字。 |
计划 |
企业 |
定价计划确定与实例关联的资源和成本。 |
区域 |
离用户最近的区域。 |
最靠近用户的位置。 |
区域冗余 |
未选定 |
在 Azure 可用性区域中创建 Azure Spring Apps 服务的选项。 此功能目前在所有区域都不受支持。 |
软件 IP 计划 |
即用即付 |
Azure Spring Apps 提供即用即付服务。 |
Terms |
已选择 |
与市场产品/服务关联的协议复选框。 需要选中此复选框。 |
部署示例项目 |
未选定 |
使用内置示例应用程序的选项。 |
选择“查看 + 创建”,查看所选内容。 然后,选择“创建”以预配 Azure Spring Apps 实例。
在工具栏上选择“通知”图标(铃铛)以监视部署过程。 完成部署后,可以选择“固定到仪表板”,以便在 Azure 门户仪表板上为此服务创建磁贴作为前往此服务的“概述”页的快捷方式。
选择“转到资源”,转到“Azure Spring Apps 概述”页面。
3.3. 准备 PostgreSQL 实例
执行以下步骤以创建 Azure Database for PostgreSQL 服务器:
在 Azure 门户中,选择“创建资源”。
选择“数据库”>“Azure Database for PostgreSQL 灵活服务器”。
在“基本信息”选项卡中填写以下信息:
-
服务器名称:my-demo-pgsql
-
区域:美国东部
-
PostgreSQL 版本:14
-
工作负载类型:开发
-
启用高可用性:未选中
-
身份验证方法:仅限 PostgreSQL 身份验证
-
管理员用户名:myadmin
-
密码和确认密码:输入密码。
使用以下信息配置“网络”选项卡:
-
连接方法:公共访问(允许的 IP 地址)
-
允许从 Azure 内的任何 Azure 服务公开访问此服务器:已选中
选择“查看 + 创建”以查看选择,然后选择“创建”以预配服务器。 此操作可能需要几分钟时间。
在 Azure 门户中转到 PostgreSQL 服务器。
从导航菜单中选择“数据库”以创建数据库,例如 Todo。
3.4. 将应用实例连接到 PostgreSQL 实例
遵循以下步骤连接服务实例:
在 Azure 门户中转到 Azure Spring Apps 实例。
在导航窗格中,打开“应用”,然后选择“创建应用”。
在“创建应用”页上,对于应用名称,请使用 simple-todo-web,并将所有其他字段保留其默认值。
选择“创建”以完成应用创建,然后选择该应用以查看详细信息。
从导航窗格中选择“服务连接器”,然后选择“创建”以创建新的服务连接。
在“基本信息”选项卡中填写以下信息:
-
服务类型:DB for PostgreSQL 灵活服务器
-
连接名称:填充了可以修改的自动生成的名称。
-
订阅:选择订阅。
-
PostgreSQL 灵活服务器:my-demo-pgsql
-
PostgreSQL 数据库:选择创建的数据库。
-
客户端类型:SpringBoot
使用以下信息配置配置“下一步: 身份验证”选项卡:
注意
Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程(例如数据库、缓存、消息传送或 AI 服务)需要非常高的信任度,并携带其他流中不存在的风险。 仅当更安全的选项(例如无密码连接或无密钥连接的托管标识)不可行时,才使用此流。 对于本地计算机操作,首选无密码连接或无密钥连接的用户标识。
-
选择要在计算服务和目标服务之间使用的身份验证类型:选择“连接字符串”。
-
使用...以继续:选择“数据库凭据”
-
用户名:myadmin
-
密码:输入密码。
选择“下一页:网络”。 使用默认选项“配置防火墙规则以启用对目标服务的访问权限”。
选择“下一步: 查看并创建”以查看选择,然后选择“创建”来创建连接。
3.1. 提供每个资源的名称
使用以下命令创建变量以保存资源名称。 请务必将占位符替换为你自己的值。
注意
Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程(例如数据库、缓存、消息传送或 AI 服务)需要非常高的信任度,并携带其他流中不存在的风险。 仅当更安全的选项(例如无密码连接或无密钥连接的托管标识)不可行时,才使用此流。 对于本地计算机操作,首选无密码连接或无密钥连接的用户标识。
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
export POSTGRESQL_SERVER=<server-name>
export POSTGRESQL_DB=<database-name>
export POSTGRESQL_ADMIN_USERNAME=<admin-username>
export POSTGRESQL_ADMIN_PASSWORD=<admin-password>
export AZURE_SPRING_APPS_NAME=<Azure-Spring-Apps-service-instance-name>
export APP_NAME=<web-app-name>
3.2. 创建新的资源组
使用以下步骤来创建新的资源组。
使用以下命令以登录到 Azure CLI:
az login
使用以下命令设置默认位置。
az configure --defaults location=${LOCATION}
使用以下命令列出所有可用订阅,以确定要使用的订阅 ID。
az account list --output table
使用以下命令设置默认订阅:
az account set --subscription <subscription-ID>
使用以下命令来创建资源组。
az group create --resource-group ${RESOURCE_GROUP}
使用以下命令将新创建的资源组设置为默认资源组。
az configure --defaults group=${RESOURCE_GROUP}
3.3. 创建 Azure Spring Apps 实例
Azure Spring Apps 用于托管 Spring Web 应用。 创建 Azure Spring Apps 实例和其中的应用程序。
使用以下命令创建 Azure Spring Apps 服务实例。
az spring create --name ${AZURE_SPRING_APPS_NAME} --sku enterprise
使用以下命令在 Azure Spring Apps 实例中创建应用程序。
az spring app create \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${APP_NAME} \
--assign-endpoint true
3.4. 准备 PostgreSQL 实例
Spring Web 应用将 H2 用于 localhost 中的数据库,将 Azure Database for PostgreSQL 用于 Azure 中的数据库。
使用以下命令创建 PostgreSQL 实例:
注意
Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程(例如数据库、缓存、消息传送或 AI 服务)需要非常高的信任度,并携带其他流中不存在的风险。 仅当更安全的选项(例如无密码连接或无密钥连接的托管标识)不可行时,才使用此流。 对于本地计算机操作,首选无密码连接或无密钥连接的用户标识。
az postgres flexible-server create \
--name ${POSTGRESQL_SERVER} \
--database-name ${POSTGRESQL_DB} \
--admin-user ${POSTGRESQL_ADMIN_USERNAME} \
--admin-password ${POSTGRESQL_ADMIN_PASSWORD} \
--public-access 0.0.0.0
指定 0.0.0.0
将允许从 Azure 中部署的任何资源进行公共访问以访问服务器。
3.5. 将应用实例连接到 PostgreSQL 实例
创建应用程序实例和 PostgreSQL 实例后,应用程序实例无法直接访问 PostgreSQL 实例。 使用以下步骤使应用程序能够连接到 PostgreSQL 实例。
使用以下命令获取 PostgreSQL 实例的完全限定域名:
export PSQL_FQDN=$(az postgres flexible-server show \
--name ${POSTGRESQL_SERVER} \
--query fullyQualifiedDomainName \
--output tsv)
使用以下命令通过环境变量向应用程序提供 spring.datasource.
属性:
注意
Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程(例如数据库、缓存、消息传送或 AI 服务)需要非常高的信任度,并携带其他流中不存在的风险。 仅当更安全的选项(例如无密码连接或无密钥连接的托管标识)不可行时,才使用此流。 对于本地计算机操作,首选无密码连接或无密钥连接的用户标识。
az spring app update \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${APP_NAME} \
--env SPRING_DATASOURCE_URL="jdbc:postgresql://${PSQL_FQDN}:5432/${POSTGRESQL_DB}?sslmode=require" \
SPRING_DATASOURCE_USERNAME="${POSTGRESQL_ADMIN_USERNAME}" \
SPRING_DATASOURCE_PASSWORD="${POSTGRESQL_ADMIN_PASSWORD}"
4. 将应用部署到 Azure Spring Apps
上一部分中的“部署到 Azure”按钮将启动包含应用程序部署的 Azure 门户体验,因此无需执行任何其他操作。
按照以下步骤,使用适用于 Azure Spring Apps 的 Maven 插件进行部署:
导航到完整目录,然后运行以下命令以在 Azure Spring Apps 中配置应用:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
以下列表描述了命令交互:
- 选择要配置的子模块:选择要配置的模块,然后输入 SimpleTodo Web 模块的编号。
- OAuth2 登录:你需要根据 OAuth2 协议授权到 Azure 的登录。
-
选择订阅:选择所创建的 Azure Spring Apps 实例的订阅列表编号,它默认为列表中的第一个订阅。 如果使用默认编号,请直接按 Enter。
-
使用 Azure 中的现有 Azure Spring Apps:按 y 使用现有的 Azure Spring Apps 实例。
-
选择要部署的 Azure Spring Apps:选择创建的 Azure Spring Apps 实例的编号。 如果使用默认编号,请直接按 Enter。
-
公开此应用的公共访问权限:按 y。
-
确认保存上述所有配置:按 y。 如果按 n,则配置不会保存在 POM 文件中。
使用以下命令部署应用:
./mvnw azure-spring-apps:deploy
以下列表描述了命令交互:
- OAuth2 登录:你需要根据 OAuth2 协议授权到 Azure 的登录。
执行命令后,你会从以下日志消息中看到部署已成功:
[INFO] Deployment Status: Running
[INFO] InstanceName:simple-todo-web-default-15-xxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:N/A
[INFO] Getting public url of app(simple-todo-web)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-simple-todo-web.azuremicroservices.io
输出的应用程序 URL 是用于访问 todo
应用程序的终结点。
云环境准备就绪后,即可部署应用程序。 使用以下命令部署应用:
az spring app deploy \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${APP_NAME} \
--artifact-path web/target/simple-todo-web.jar
2. 准备 Spring 项目
尽管你会在后面的步骤中使用 Azure 门户,但必须使用 Bash 命令行在本地准备项目。 使用以下步骤在本地克隆和运行应用:
使用以下命令从 GitHub 克隆示例项目:
git clone https://github.com/Azure-Samples/ASA-Samples-Web-Application.git
使用以下命令通过 Maven 生成示例项目:
cd ASA-Samples-Web-Application
./mvnw clean package
使用以下命令运行示例应用程序:
java -jar web/target/simple-todo-web.jar
在浏览器中转到 http://localhost:8080
以访问此应用程序。
使用以下步骤通过 Azure Developer CLI 模板初始化 Web 应用程序:
打开终端,创建一个空文件夹,然后将目录更改为该文件夹。
使用以下命令来初始化项目:
azd init --template https://github.com/Azure-Samples/ASA-Samples-Web-Application
以下列表描述了命令交互:
-
输入新的环境名称:提供环境名称,该名称用作为保存所有 Azure 资源而创建的资源组的后缀。 此名称应在 Azure 订阅中具有唯一性。
控制台输出类似于以下示例的消息:
Initializing a new project (azd init)
(✓) Done: Initialized git repository
(✓) Done: Downloading template code to: <your-local-path>
Enter a new environment name: <your-env-name>
SUCCESS: New project initialized!
You can view the template code in your directory: <your-local-path>
Learn more about running 3rd party code on our DevHub: https://aka.ms/azd-third-party-code-notice
3. 准备云环境
运行此示例所需的主要资源是 Azure Spring Apps 实例和 Azure Database for PostgreSQL 实例。 本部分提供创建这些资源的步骤。
本部分使用“部署到 Azure”按钮在 Azure 门户中启动部署体验。 此体验使用 ARM 模板来创建 Azure 资源。
3.1. 登录到 Azure 门户
转到 Azure 门户,输入登录到门户所需的凭据。 默认视图是服务仪表板。
3.2. 创建 Azure 资源
按以下步骤创建应用依赖的所有 Azure 资源:
选择以下“部署到 Azure”按钮在 Azure 门户中启动部署体验:
填写“基本信息”选项卡上的表单。填写表单时,请参考下表:
设置 |
建议的值 |
描述 |
订阅 |
你的订阅名称。 |
要用于服务器的 Azure 订阅。 如果你有多个订阅,请选择要计费的资源所在的订阅。 |
资源组 |
myresourcegroup |
新的资源组名称,或订阅中的现有资源组。 |
区域 |
离用户最近的区域。 |
此区域用于创建资源组。 |
PostgreSQL 管理员密码 |
空值 |
PostgreSQL 服务器管理员的密码。 |
PostgreSQL 用户密码 |
空值 |
在应用程序中使用的 PostgreSQL 应用程序用户的密码。 |
选择“查看 + 创建”,查看所选内容。 然后选择“创建”将应用部署到 Azure Spring Apps。
在工具栏上选择“通知”图标(铃铛)以监视部署过程。 完成部署后,可以选择“固定到仪表板”,以便在 Azure 门户仪表板上为此服务创建磁贴作为前往此服务的“概述”页的快捷方式。 选择“转到资源”以打开服务的“概述”页。
使用以下步骤创建 Azure Spring Apps 实例和 Azure Database for PostgreSQL 实例:
3.1. 登录到 Azure 门户
转到 Azure 门户,输入凭据以登录到门户。 默认视图是服务仪表板。
3.2. 创建 Azure Spring Apps 实例
遵循以下步骤来创建服务实例:
在门户的角落选择“创建资源”。
选择“计算>Azure Spring Apps”。
填写“基本信息”选项卡上的表单。填写表单时,请参考下表:
设置 |
建议的值 |
描述 |
订阅 |
你的订阅名称。 |
要用于服务器的 Azure 订阅。 如果你有多个订阅,请选择要计费的资源所在的订阅。 |
资源组 |
myresourcegroup |
新的资源组名称,或订阅中的现有资源组。 |
名称 |
myasa |
用于标识 Azure Spring Apps 服务的唯一名称。 该名称必须为 4 到 32 个字符,只能包含小写字母、数字及连字符。 服务名称的第一个字符必须是字母,最后一个字符必须是字母或数字。 |
计划 |
标准消耗和专用型(预览版) |
定价计划会确定与实例关联的资源和成本。 |
区域 |
离用户最近的区域。 |
最靠近用户的位置。 |
容器应用环境 |
myacaenv |
环境是围绕一个或多个容器应用的安全边界,这些应用可以相互通信并共享虚拟网络、日志记录和 Dapr 配置。 |
(可选)在“基本信息”选项卡中填写以下信息,以创建容器应用环境:
- 环境名称:myacaenv
- 计划:消耗
- 区域冗余:已禁用
然后,选择“创建”以创建容器应用环境。
选择“查看 + 创建”,查看所选内容。 然后,选择“创建”以预配 Azure Spring Apps 实例。
在工具栏上选择“通知”图标(铃铛)以监视部署过程。 完成部署后,可以选择“固定到仪表板”,以便在 Azure 门户仪表板上为此服务创建磁贴作为前往此服务的“概述”页的快捷方式。 选择“转到资源”以打开服务的“概述”页。
3.3. 准备 PostgreSQL 实例
执行以下步骤以创建 Azure Database for PostgreSQL 服务器:
在 Azure 门户中,选择“创建资源”。
选择“数据库”>“Azure Database for PostgreSQL 灵活服务器”。
在“基本信息”选项卡中填写以下信息:
-
服务器名称:my-demo-pgsql
-
区域:美国东部
-
PostgreSQL 版本:14
-
工作负载类型:开发
-
启用高可用性:未选中
-
身份验证方法:仅限 PostgreSQL 身份验证
-
管理员用户名:myadmin
-
密码和确认密码:输入密码。
使用以下信息配置“网络”选项卡:
-
连接方法:公共访问(允许的 IP 地址)
-
允许从 Azure 内的任何 Azure 服务公开访问此服务器:已选中
选择“查看 + 创建”以查看选择,然后选择“创建”以预配服务器。 此操作可能需要几分钟时间。
在 Azure 门户中转到 PostgreSQL 服务器。
从导航菜单中选择“数据库”以创建数据库,例如 Todo。
3.4. 将应用实例连接到 PostgreSQL 实例
遵循以下步骤连接服务实例:
在 Azure 门户中转到 Azure Spring Apps 实例。
在导航窗格中,打开“应用”,然后选择“创建应用”。
在“创建应用”页上,对于应用名称,请使用 simple-todo-web,然后选择“使用快速入门示例应用”创建应用。
选择“创建”以完成应用创建,然后选择该应用以查看其详细信息。
从导航窗格中选择“配置”,然后在“环境变量”选项卡上配置以下属性:
-
SPRING_DATASOURCE_URL:jdbc:postgresql://my-demo-pgsql.postgres.database.azure.com:5432/todo?sslmode=require
- SPRING_DATASOURCE_USERNAME:myadmin
- SPRING_DATASOURCE_PASSWORD:输入密码。
选择“保存”以保存连接属性。
使用以下步骤创建 Azure Spring Apps 实例和 Azure Database for PostgreSQL 实例:
使用以下命令通过 OAuth2 登录到 Azure CLI。 如果已登录,请忽略此步。
azd auth login
控制台输出类似于以下示例的消息:
Logged in to Azure.
运行以下命令,以将模板的基础结构预配到 Azure:
azd provision
以下列表描述了命令交互:
-
请选择要使用的 Azure 订阅:使用箭头移动,键入以进行筛选,然后按 Enter。
-
请选择要使用的 Azure 位置:使用箭头移动,键入以进行筛选,然后按 Enter。
控制台输出类似于以下示例的消息:
SUCCESS: Your application was provisioned in Azure in xx minutes xx seconds.
You can view the resources created under the resource group rg-<your-environment-name> in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/<your-subscription-id>/resourceGroups/rg-<your-environment-name>/overview
注意
此命令可能需要一段时间才能完成。 预配 Azure 资源时,系统会显示进度指示器。
4. 将应用部署到 Azure Spring Apps
上一部分中的“部署到 Azure”按钮将启动包含应用程序部署的 Azure 门户体验,因此无需执行任何其他操作。
按照以下步骤,使用适用于 Azure Spring Apps 的 Maven 插件进行部署:
导航到完整目录,然后运行以下命令以在 Azure Spring Apps 中配置应用:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
以下列表描述了命令交互:
- 选择要配置的子模块:选择要配置的模块,然后输入 SimpleTodo Web 模块的编号。
- OAuth2 登录:你需要根据 OAuth2 协议授权到 Azure 的登录。
-
选择订阅:选择所创建的 Azure Spring Apps 实例的订阅列表编号,它默认为列表中的第一个订阅。 如果使用默认编号,请直接按 Enter。
-
使用 Azure 中的现有 Azure Spring Apps:按 y 使用现有的 Azure Spring Apps 实例。
-
选择要部署的 Azure Spring Apps:选择创建的 Azure Spring Apps 实例的编号。 如果使用默认编号,请直接按 Enter。
-
公开此应用的公共访问权限:按 y。
-
确认保存上述所有配置:按 y。 如果按 n,则配置不会保存在 POM 文件中。
使用以下命令部署应用:
./mvnw azure-spring-apps:deploy
以下列表描述了命令交互:
- OAuth2 登录:你需要根据 OAuth2 协议授权到 Azure 的登录。
执行命令后,你会从以下日志消息中看到部署已成功:
[INFO] Start updating app(simple-todo-web)...
[INFO] App(simple-todo-web) is successfully updated.
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO] InstanceName:simple-todo-web--default-xxxxxxx-xxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:NONE
[INFO] Getting public url of app(simple-todo-web)...
[INFO] Application url: https://simple-todo-web.<unique-identifier>.<region-name>.azurecontainerapps.io
输出的应用程序 URL 是用于访问 todo
应用程序的终结点。
现在可以将应用部署到 Azure Spring Apps。 按照以下步骤打包应用,预配 Web 应用程序所需的 Azure 资源,然后部署到 Azure Spring Apps:
使用以下命令打包应用程序的可部署副本:
azd package
控制台输出类似于以下示例的消息:
SUCCESS: Your application was packaged for Azure in xx seconds.
使用以下命令将应用程序代码部署到这些新预配的资源:
azd deploy
控制台输出类似于以下示例的消息:
Deploying services (azd deploy)
(✓) Done: Deploying service simple-todo-web
- Endpoint: https://simple-todo-web.xxx.<your-azure-location>.azurecontainerapps.io
SUCCESS: Your application was deployed to Azure in xx minutes xx seconds.
You can view the resources created under the resource group rg-<your-environment-name> in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/<your-subscription-id>/resourceGroups/rg-<your-environment-name>/overview
输出的终结点是用于访问 todo
应用程序的终结点。
2. 准备 Spring 项目
尽管你会在后面的步骤中使用 Azure 门户,但必须使用 Bash 命令行在本地准备项目。 使用以下步骤在本地克隆和运行应用:
使用以下命令从 GitHub 克隆示例项目:
git clone https://github.com/Azure-Samples/ASA-Samples-Web-Application.git
使用以下命令通过 Maven 生成示例项目:
cd ASA-Samples-Web-Application
./mvnw clean package
使用以下命令运行示例应用程序:
java -jar web/target/simple-todo-web.jar
在浏览器中转到 http://localhost:8080
以访问此应用程序。
使用以下步骤通过 Azure Developer CLI 模板初始化 Web 应用程序:
打开终端,创建一个空文件夹,然后将目录更改为该文件夹。
使用以下命令来初始化项目:
azd init --template https://github.com/Azure-Samples/ASA-Samples-Web-Application
以下列表描述了命令交互:
-
输入新的环境名称:提供环境名称,该名称用作为保存所有 Azure 资源而创建的资源组的后缀。 此名称应在 Azure 订阅中具有唯一性。
控制台输出类似于以下示例的消息:
Initializing a new project (azd init)
(✓) Done: Initialized git repository
(✓) Done: Downloading template code to: <your-local-path>
Please enter a new environment name: <your-env-name>
SUCCESS: New project initialized!
You can view the template code in your directory: <your-local-path>
Learn more about running 3rd party code on our DevHub: https://aka.ms/azd-third-party-code-notice
3. 准备云环境
运行此示例所需的主要资源是 Azure Spring Apps 实例和 Azure Database for PostgreSQL 实例。 本部分提供创建这些资源的步骤。
本部分使用“部署到 Azure”按钮在 Azure 门户中启动部署体验。 此体验使用 ARM 模板来创建 Azure 资源。
3.1. 登录到 Azure 门户
转到 Azure 门户,输入登录到门户所需的凭据。 默认视图是服务仪表板。
3.2. 创建 Azure 资源
按以下步骤创建应用依赖的所有 Azure 资源:
选择以下“部署到 Azure”按钮在 Azure 门户中启动部署体验:
填写“基本信息”选项卡上的表单。填写表单时,请参考下表:
设置 |
建议的值 |
描述 |
订阅 |
你的订阅名称。 |
要用于服务器的 Azure 订阅。 如果你有多个订阅,请选择要计费的资源所在的订阅。 |
资源组 |
myresourcegroup |
新的资源组名称,或订阅中的现有资源组。 |
区域 |
离用户最近的区域。 |
此区域用于创建资源组。 |
Postgre SQL 管理员密码 |
不可用 |
PostgreSQL 服务器管理员的密码。 |
Postgre SQL 用户密码 |
不可用 |
在应用程序中使用的 PostgreSQL 应用程序用户的密码。 |
选择“查看 + 创建”,查看所选内容。 然后选择“创建”将应用部署到 Azure Spring Apps。
在工具栏上选择“通知”图标(铃铛)以监视部署过程。 完成部署后,可以选择“固定到仪表板”,以便在 Azure 门户仪表板上为此服务创建磁贴作为前往此服务的“概述”页的快捷方式。 选择“转到资源”以打开服务的“概述”页。
使用以下步骤创建 Azure Spring Apps 实例和 Azure Database for PostgreSQL 实例:
3.1. 登录到 Azure 门户
转到 Azure 门户,输入登录到门户所需的凭据。 默认视图是服务仪表板。
3.2. 创建 Azure Spring Apps 实例
遵循以下步骤来创建服务实例:
在门户的角落选择“创建资源”。
选择“计算>Azure Spring Apps”。
填写“基本信息”选项卡上的表单。填写表单时,请参考下表:
设置 |
建议的值 |
描述 |
订阅 |
你的订阅名称。 |
要用于服务器的 Azure 订阅。 如果你有多个订阅,请选择要计费的资源所在的订阅。 |
资源组 |
myresourcegroup |
新的资源组名称,或订阅中的现有资源组。 |
名称 |
myasa |
用于标识 Azure Spring Apps 服务的唯一名称。 该名称必须为 4 到 32 个字符,只能包含小写字母、数字及连字符。 服务名称的第一个字符必须是字母,最后一个字符必须是字母或数字。 |
规划 |
基本 |
定价计划会确定与实例关联的资源和成本。 |
区域 |
离用户最近的区域。 |
最靠近用户的位置。 |
区域冗余 |
未选定 |
是否在 Azure 可用性区域中创建 Azure Spring Apps 服务。 目前,此功能仅在某些区域受支持。 |
选择“查看 + 创建”,查看所选内容。 然后,选择“创建”以预配 Azure Spring Apps 实例。
在工具栏上选择“通知”图标(铃铛)以监视部署过程。 完成部署后,可以选择“固定到仪表板”,以便在 Azure 门户仪表板上为此服务创建磁贴作为前往此服务的“概述”页的快捷方式。 选择“转到资源”以打开服务的“概述”页。
3.3. 准备 PostgreSQL 实例
执行以下步骤以创建 Azure Database for PostgreSQL 服务器:
在 Azure 门户中,选择“创建资源”。
选择“数据库”>“Azure Database for PostgreSQL 灵活服务器”。
在“基本信息”选项卡中填写以下信息:
-
服务器名称:my-demo-pgsql
-
区域:美国东部
-
PostgreSQL 版本:14
-
工作负载类型:开发
-
启用高可用性:未选中
-
身份验证方法:仅限 PostgreSQL 身份验证
-
管理员用户名:myadmin
-
密码和确认密码:输入密码。
使用以下信息配置“网络”选项卡:
-
连接方法:公共访问(允许的 IP 地址)
-
允许从 Azure 内的任何 Azure 服务公开访问此服务器:已选中
选择“查看 + 创建”以查看选择,然后选择“创建”以预配服务器。 此操作可能需要几分钟时间。
在 Azure 门户中转到 PostgreSQL 服务器。
从导航菜单中选择“数据库”以创建数据库,例如 Todo。
3.4. 将应用实例连接到 PostgreSQL 实例
遵循以下步骤连接服务实例:
在 Azure 门户中转到 Azure Spring Apps 实例。
在导航窗格中,打开“应用”窗格,然后选择“创建应用”。
在“创建应用”页上,对于应用名称,请使用 simple-todo-web,对于运行时平台,请选择 Java 17。
选择“创建”以完成应用创建,然后选择应用以查看详细信息。
从导航窗格中选择“服务连接器”,然后选择“创建”以创建新的服务连接。
在“基本信息”选项卡中填写以下信息:
-
服务类型:DB for PostgreSQL 灵活服务器
-
连接名称:填充了可以修改的自动生成的名称。
-
订阅:选择订阅。
-
PostgreSQL 灵活服务器:my-demo-pgsql
-
PostgreSQL 数据库:选择创建的数据库。
-
客户端类型:SpringBoot
使用以下信息配置配置“下一步: 身份验证”选项卡:
-
选择要在计算服务和目标服务之间使用的身份验证类型:选择“连接字符串”。
-
继续...:选择“数据库凭据”。
-
用户名:myadmin
-
密码:输入密码。
选择“下一页:网络”。 使用默认选项“配置防火墙规则以启用对目标服务的访问权限”。
选择“下一步: 查看并创建”以查看选择,然后选择“创建”来创建连接。
使用以下步骤创建 Azure Spring Apps 实例和 Azure Database for PostgreSQL 实例:
使用以下命令以通过 OAuth2 登录 Azure。 如果已登录,请忽略此步。
azd auth login
控制台输出类似于以下示例的消息:
Logged in to Azure.
使用以下命令通过标准计划设置模板:
azd env set PLAN standard
运行以下命令,以将模板的基础结构预配到 Azure:
azd provision
以下列表描述了命令交互:
-
请选择要使用的 Azure 订阅:使用箭头移动,键入以进行筛选,然后按 Enter。
-
请选择要使用的 Azure 位置:使用箭头移动,键入以进行筛选,然后按 Enter。
控制台输出类似于以下示例的消息:
SUCCESS: Your application was provisioned in Azure in xx minutes xx seconds.
You can view the resources created under the resource group rg-<your-environment-name> in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/<your-subscription-id>/resourceGroups/rg-<your-environment-name>/overview
注意
此命令可能需要一段时间才能完成。 预配 Azure 资源时,系统会显示进度指示器。
4. 将应用部署到 Azure Spring Apps
上一部分中的“部署到 Azure”按钮将启动包含应用程序部署的 Azure 门户体验,因此无需执行任何其他操作。
现在可以将应用部署到 Azure Spring Apps。
按照以下步骤使用适用于 Azure Spring Apps 的 Maven 插件进行部署:
导航到示例项目目录,并运行以下命令在 Azure Spring Apps 中配置应用:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
以下列表描述了命令交互:
- 选择要配置的子模块:选择要配置的模块,然后输入 SimpleTodo Web 模块的编号。
- OAuth2 登录:根据 OAuth2 协议授权登录到 Azure。
-
选择订阅:选择所创建的 Azure Spring Apps 实例的订阅列表编号,它默认为列表中的第一个订阅。 如果使用默认编号,请直接按 ENTER。
-
选择 Azure Spring Apps:选择所创建的 Azure Spring Apps 实例的编号。 如果使用默认编号,请直接按 ENTER。
-
公开此应用的公共访问权限?:按 y。
-
确认保存上述所有配置 (Y/n):按 y。 如果按 n,则配置不会保存在 POM 文件中。
使用以下命令部署应用:
./mvnw azure-spring-apps:deploy
以下列表描述了命令交互:
- OAuth2 登录:你需要根据 OAuth2 协议授权到 Azure 的登录。
执行命令后,你会从以下日志消息中看到部署已成功:
[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO] InstanceName:simple-todo-web-default-x-xxxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:UNREGISTERED
[INFO] InstanceName:simple-todo-web-default-x-xxxxxxxxx-xxxxx Status:Terminating Reason:null DiscoverStatus:UNREGISTERED
[INFO] Getting public url of app(simple-todo-web)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-simple-todo-web.azuremicroservices.io
输出的应用程序 URL 是用于访问 todo
应用程序的终结点。
现在可以将应用部署到 Azure Spring Apps。 按照以下步骤打包应用,预配 Web 应用程序所需的 Azure 资源,然后部署到 Azure Spring Apps:
使用以下命令打包应用程序的可部署副本:
azd package
控制台输出类似于以下示例的消息:
SUCCESS: Your application was packaged for Azure in xx seconds.
使用以下命令将应用程序代码部署到这些新预配的资源:
azd deploy
控制台输出类似于以下示例的消息:
Deploying services (azd deploy)
(✓) Done: Deploying service simple-todo-web
- Endpoint: https://<your-Azure-Spring-Apps-instance-name>-simple-todo-web.azuremicroservices.io/
SUCCESS: Your application was deployed to Azure in xx minutes xx seconds.
You can view the resources created under the resource group rg-<your-environment-name> in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/<your-subscription-id>/resourceGroups/rg-<your-environment-name>/overview
输出的终结点是用于访问 todo
应用程序的终结点。
5. 验证 Web 应用
现在,你可以访问部署的应用以查看它是否正常工作。
按照以下步骤来验证:
部署完成后,可以从部署输出中找到应用程序 URL:
使用输出的应用程序 URL 来访问应用程序。 页面应如你在 localhost 中看到的那样显示。
查看每个资源部署的详细信息,这些信息用于调查任何部署问题。
使用输出的应用程序 URL 来访问应用程序。 页面应如你在 localhost 中看到的那样显示。
按照以下步骤来验证:
完成部署后,可通过此 URL 访问该应用:https://${AZURE_SPRING_APPS_NAME}-${APP_NAME}.azuremicroservices.io/
。 页面应如你在 localhost 中看到的那样显示。
若要检查应用的日志以调查任何部署问题,请使用以下命令:
az spring app logs \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${APP_NAME}
按照以下步骤来验证:
部署完成后,可以从部署输出中找到应用程序 URL:
访问应用程序 URL。 页面应如你在 localhost 中看到的那样显示。
查看每个资源部署的详细信息,这些信息用于调查任何部署问题。
使用输出的应用程序 URL 来访问应用程序。 页面应如你在 localhost 中看到的那样显示。
使用输出终结点访问应用程序。 页面应如你在 localhost 中看到的那样显示。
按照以下步骤来验证:
部署完成后,从部署输出中找到应用程序 URL:
访问应用程序 URL。 页面应如你在 localhost 中看到的那样显示。
查看每个资源部署的详细信息,这些信息用于调查任何部署问题。
使用输出的应用程序 URL 来访问应用程序。 页面应如你在 localhost 中看到的那样显示。
使用输出终结点访问应用程序。 页面应如你在 localhost 中看到的那样显示。
6.清理资源
当不再需要在本文中创建的资源时,请务必将其删除。 可以删除 Azure 资源组,其中包括资源组中的所有资源。
按以下步骤删除整个资源组,包括新创建的服务实例:
在 Azure 门户中查找资源组。 在导航菜单上,选择“资源组”,然后选择资源组的名称。
在“资源组”页上,选择“删除”。 在文本框中输入资源组的名称以确认删除,然后选择“删除”。
按以下步骤删除整个资源组,包括新创建的服务实例:
在 Azure 门户中查找资源组。 在导航菜单上,选择“资源组”,然后选择资源组的名称。
在“资源组”页上,选择“删除”。 在文本框中输入资源组的名称以确认删除,然后选择“删除”。
使用以下命令删除此示例应用程序中使用的所有 Azure 资源:
azd down
以下列表描述了命令交互:
-
要删除的资源总数:<resources-total>,是否确定要继续?:按 y。
控制台输出类似于以下示例的消息:
SUCCESS: Your application was removed from Azure in xx minutes xx seconds.
使用以下步骤删除整个资源组,包括新创建的服务实例:
在 Azure 门户中查找资源组。 在导航菜单上,选择“资源组”,然后选择资源组的名称。
在“资源组”页上,选择“删除”。 在文本框中输入资源组的名称以确认删除,然后选择“删除”。
按以下步骤删除整个资源组,包括新创建的服务实例:
在 Azure 门户中查找资源组。 在导航菜单上,选择“资源组”,然后选择资源组的名称。
在“资源组”页上,选择“删除”。 在文本框中输入资源组的名称以确认删除,然后选择“删除”。
使用以下命令删除整个资源组,包括新创建的服务:
az group delete --name ${RESOURCE_GROUP}
7. 后续步骤
有关详细信息,请参阅以下文章: