Övning – Konfigurera Azure Container Apps

Slutförd

I den här lektionen skapar du en Azure-resursgrupp som innehåller programmets resurser. Sedan konfigurerar du PostgreSQL-databasen med hjälp av Azure CLI. Slutligen konfigurerar du Quarkus-programmet för åtkomst till den fjärranslutna PostgreSQL-databasen. Använd valfri terminal för att köra kommandona.

Förbereda arbetsmiljön

Du måste konfigurera vissa miljövariabler. Här följer några kommentarer om de variabler som du skapar:

Variabel Beskrivning
AZ_PROJECT Namnet på projektet. För att hålla det här värdet unikt rekommenderar vi att du använder AZ_PROJECT_<your initials>.
AZ_RESOURCE_GROUP Namnet på resursgruppen som innehåller resurserna.
AZ_LOCATION Azure-regionen. Vi rekommenderar att du använder en region som är nära där du bor. Om du vill se listan över tillgängliga regioner anger du az account list-locations i en kommandotolk.
AZ_CONTAINERAPP Namnet på den Azure Container Apps-instans som innehåller containrarna.
AZ_CONTAINERAPP_ENV Namnet på Azure Container Apps-miljön.
AZ_POSTGRES_SERVER_NAME Namnet på PostgreSQL-servern. Icke-numeriska tecken tillåts inte: -, _, !, $, #, %. Namnet ska vara unikt i Hela Azure. Se till att använda en unik identifierare.
AZ_POSTGRES_DB_NAME PostgreSQL-databasnamnet. Standardnamnet för PostgreSQL-databasen är postgres.
AZ_POSTGRES_USERNAME Standardadministratörsanvändarnamnet för PostgreSQL-databasservern.
AZ_POSTGRES_PASSWORD Standardlösenordet för PostgreSQL-databasservern. Använd ett säkert lösenord.

Not

Du kan namnge dina Azure-resurser på valfritt sätt, men vi rekommenderar att du läser Förkortningsexempel för Azure-resurser. Den här artikeln innehåller exempelförkortningar för många Azure-resurser (till exempel rg för resursgrupper och ca för containerappar).

Använd följande kommandon för att konfigurera variablerna. Se till att ändra värdena enligt beskrivningen i föregående tabell.

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>}"

Dessa miljövariabler används i resten av den här modulen.

Skapa sedan en resursgrupp:

az group create \
    --name $AZ_RESOURCE_GROUP \
    --location $AZ_LOCATION

Skapa en instans av Azure Database for PostgreSQL

Nu ska du skapa en hanterad PostgreSQL-server. Kör följande kommando för att skapa en liten instans av Azure Database for 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"

Det här kommandot skapar en liten PostgreSQL-server som använder de variabler som du konfigurerade tidigare.

Konfigurera Quarkus för åtkomst till PostgreSQL-databasen

Nu ska du ansluta Quarkus-programmet till PostgreSQL-databasen. För att göra det måste du först hämta anslutningssträngen för databasen:

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"

Observera anslutningssträngen som returneras.

Konfigurera Quarkus-programmet för att ansluta till PostgreSQL-databasen

Uppdatera application.properties-filen i src/main/resources-mappen i projektet för att konfigurera anslutningssträngen till PostgreSQL-databasen. Om du vill göra det anger du egenskapen quarkus.datasource.jdbc.url till det tidigare utdatavärdet $POSTGRES_CONNECTION_STRING_SSL. Den &ssl=true&sslmode=require delen av anslutningssträngen tvingar drivrutinen att använda SSL, ett krav för Azure Database for PostgreSQL.

quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>

Kör Quarkus-programmet lokalt för att testa fjärrdatabasanslutningen

Använd det här kommandot för att köra programmet lokalt:

./mvnw clean quarkus:dev    # On Mac or Linux
mvnw.cmd clean quarkus:dev  # On Windows

När Quarkus körs skapar du några att göra-åtgärder med hjälp av följande cURL-kommandon i ett separat terminalfönster:

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

Kontrollera sedan att att göra-posterna finns i databasen genom att komma åt GET-slutpunkten som har definierats i to-do-appen.

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

Du bör se följande utdata:

[
   {
      "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
   }
]

Om du ser dessa utdata har du kört Quarkus-programmet och anslutit till den fjärranslutna PostgreSQL-databasen.