練習 - 設定 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

在適用於 PostgreSQL 的 Azure 資料庫中建立執行個體

您現在會建立受控 PostgreSQL 伺服器。 執行下列命令以建立適用於 MySQL 的 Azure 資料庫的小型執行個體:

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"

此命令會建立一個使用稍早所設定變數的小型 PostgreMySQL 伺服器。

設定 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&sslmode=require"

echo "POSTGRES_CONNECTION_STRING_SSL=$POSTGRES_CONNECTION_STRING_SSL"

請注意傳回的連接字串。

設定 Quarkus 應用程式以連線到 PostgreSQL 資料庫

更新專案 src/main/resources 資料夾中的 application.properties 檔案,以設定 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

接著,藉由存取待辦事項應用程式中定義的 GET 端點,檢查待辦事項是否在資料庫中:

curl http://127.0.0.1:8080/api/todos

您應該會看見下列輸出:

[
   {
      "description" : "Take Quarkus MS Learn",
      "details" : "Take the MS Learn on deploying Quarkus to Azure Container Apps",
      "done" : true,
      "id" : 1
   },
   {
      "description" : "Take Azure Container Apps MS Learn",
      "details" : "Take the ACA Learn module",
      "done" : false,
      "id" : 2
   }
]

如果您看見此輸出,您已成功執行 Quarkus 應用程式,並連線到遠端 PostgreSQL 資料庫。