练习 - 设置 Azure 容器应用
在本单元中,你将创建一个 Azure 资源组,其中包含应用程序的资源。 然后使用 Azure CLI 设置 PostgreSQL 数据库。 最后,将 Quarkus 应用程序配置为访问远程 PostgreSQL 数据库。 使用所选终端运行命令。
准备工作环境
需要设置一些环境变量。 下面是有关要创建的变量的一些说明:
变量 | 说明 |
---|---|
AZ_PROJECT |
项目的名称。 若要保持此值的唯一性,建议使用 AZ_PROJECT_<your initials> 。 |
AZ_RESOURCE_GROUP |
保存资源的资源组的名称。 |
AZ_LOCATION |
Azure 区域。 建议使用靠近你居住位置的区域。 若要查看可用区域的列表,请在命令提示符处输入 az account list-locations 。 |
AZ_CONTAINERAPP |
保存容器的 Azure 容器应用实例的名称。 |
AZ_CONTAINERAPP_ENV |
Azure 容器应用环境的名称。 |
AZ_POSTGRES_SERVER_NAME |
PostgreSQL 服务器的名称。 不允许使用非字母字符:-、_、!、$、#、%。 该名称在 Azure 中应是唯一的。 请务必使用唯一标识符。 |
AZ_POSTGRES_DB_NAME |
PostgreSQL 数据库名称。 PostgreSQL 数据库的默认名称 postgres 。 |
AZ_POSTGRES_USERNAME |
PostgreSQL 数据库服务器的默认管理员用户名。 |
AZ_POSTGRES_PASSWORD |
PostgreSQL 数据库服务器的默认密码。 使用安全密码。 |
注释
可以采用所需的任何方式命名 Azure 资源,但我们建议查看 azure 资源的 缩写示例。 本文提供了许多 Azure 资源的示例缩写(例如,资源组 rg
,以及容器应用的 ca
)。
使用以下命令设置变量。 请务必按照上表中所述修改值。
export AZ_PROJECT_<your initials>="azure-deploy-quarkus"
export AZ_RESOURCE_GROUP="rg${AZ_PROJECT_<your initials>}"
export AZ_LOCATION="eastus"
export AZ_CONTAINERAPP="ca${AZ_PROJECT_<your initials>}"
export AZ_CONTAINERAPP_ENV="cae${AZ_PROJECT_<your initials>}"
export AZ_POSTGRES_DB_NAME="postgres${AZ_PROJECT_<your initials>}"
export AZ_POSTGRES_USERNAME="<user-name>"
export AZ_POSTGRES_PASSWORD="<secure-password>"
export AZ_POSTGRES_SERVER_NAME="psql${AZ_PROJECT_<your initials>}"
本模块的其余部分都使用这些环境变量。
接下来,创建一个资源组:
az group create \
--name $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
创建 Azure Database for PostgreSQL 的实例
现在,你将创建托管的 PostgreSQL 服务器。 运行以下命令以创建 Azure Database for PostgreSQL 的小型实例:
如果以前从未创建 PostgreSQL 服务器,则需要注册提供程序。 若要注册 PostgreSQL 提供程序,请运行以下命令:
az provider register --namespace Microsoft.DBforPostgreSQL
然后,创建 PostgreSQL 服务器。
az postgres flexible-server create \
--resource-group "$AZ_RESOURCE_GROUP" \
--location "$AZ_LOCATION" \
--name "$AZ_POSTGRES_SERVER_NAME" \
--database-name "$AZ_POSTGRES_DB_NAME" \
--admin-user "$AZ_POSTGRES_USERNAME" \
--admin-password "$AZ_POSTGRES_PASSWORD" \
--public-access "All" \
--tier "Burstable" \
--sku-name "Standard_B1ms" \
--storage-size 32 \
--version "16"
此命令创建一个小型 PostgreSQL 服务器,该服务器使用前面设置的变量。
配置 Quarkus 以访问 PostgreSQL 数据库
现在,你将 Quarkus 应用程序连接到 PostgreSQL 数据库。 为此,首先需要获取数据库的连接字符串:
export POSTGRES_CONNECTION_STRING=$(
az postgres flexible-server show-connection-string \
--server-name "$AZ_POSTGRES_SERVER_NAME" \
--database-name "$AZ_POSTGRES_DB_NAME" \
--admin-user "$AZ_POSTGRES_USERNAME" \
--admin-password "$AZ_POSTGRES_PASSWORD" \
--query "connectionStrings.jdbc" \
--output tsv
)
export POSTGRES_CONNECTION_STRING_SSL="$POSTGRES_CONNECTION_STRING&ssl=true"
echo "POSTGRES_CONNECTION_STRING_SSL=$POSTGRES_CONNECTION_STRING_SSL"
请注意返回的连接字符串。
注释
Microsoft 建议使用最安全的可用身份验证流。 此过程中所述的身份验证流(例如数据库、缓存、消息传送或 AI 服务)需要高度信任应用程序,并且存在其他流中不存在的风险。 仅当更安全的选项(例如无密码连接或无密钥连接的托管标识)不可行时,才使用此流。 对于本地计算机操作,首选无密码连接或无密钥连接的用户标识。
配置 Quarkus 应用程序以连接到 PostgreSQL 数据库
更新项目的 src/main/resources
文件夹中的 application.properties
文件,以配置 PostgreSQL 数据库的连接字符串。 为此,请将 quarkus.datasource.jdbc.url
属性设置为以前输出 $POSTGRES_CONNECTION_STRING_SSL
值。 连接字符串 &ssl=true&sslmode=require
部分强制驱动程序使用 SSL,这是 Azure Database for PostgreSQL 的要求。
quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>
在本地运行 Quarkus 应用程序以测试远程数据库连接
使用此命令在本地运行应用程序:
./mvnw clean quarkus:dev # On Mac or Linux
mvnw.cmd clean quarkus:dev # On Windows
在 Quarkus 运行时,请在单独的终端窗口中使用以下 cURL 命令创建几个 to-dos:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"Take Quarkus MS Learn","details":"Take the MS Learn on deploying Quarkus to Azure Container Apps","done": "true"}' \
http://127.0.0.1:8080/api/todos
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"Take Azure Container Apps MS Learn","details":"Take the ACA Learn module","done": "false"}' \
http://127.0.0.1:8080/api/todos
接下来,通过访问在 to-do 应用中定义的 GET 终结点,检查 to-dos 是否位于数据库中:
curl http://127.0.0.1:8080/api/todos
应会看到以下输出:
[
{
"id": 1,
"description": "Take Quarkus MS Learn",
"details": "Take the MS Learn on deploying Quarkus to Azure Container Apps",
"done": true,
"createdAt": "2025-02-26T08:03:28.390854Z"
},
{
"id": 2,
"description": "Take Azure Container Apps MS Learn",
"details": "Take the ACA Learn module",
"done": false,
"createdAt": "2025-02-26T08:03:34.142249Z"
}
]
如果看到此输出,则已成功运行 Quarkus 应用程序并连接到远程 PostgreSQL 数据库。