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