練習 - 設定 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 資料庫。