練習 - 設定 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 Container Apps 實例名稱。 |
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
建立適用於 PostgreSQL 的 Azure 資料庫實例
您現在會建立受控 PostgreSQL 伺服器。 執行下列命令來建立適用於 PostgreSQL 的 Azure 資料庫小型實例:
如果您之前從未建立 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 資料庫
更新專案 application.properties 資料夾中的 src/main/resources 檔案,以設定 PostgreSQL 資料庫的連接字串。 若要這樣做,請將 quarkus.datasource.jdbc.url 屬性設定為先前的輸出 $POSTGRES_CONNECTION_STRING_SSL 值。 連接字串 &ssl=true&sslmode=require 部分會強制驅動程式使用 SSL,這是適用於 PostgreSQL 的 Azure 資料庫需求。
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 命令來建立幾個待辦事項:
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 資料庫。