Megosztás a következőn keresztül:


Java-alkalmazás üzembe helyezése a Quarkus használatával az Azure Container Appsben

Ez a cikk bemutatja, hogyan helyezheti üzembe gyorsan a Red Hat Quarkus-t a Microsoft Azure Container Appsben egy egyszerű CRUD-alkalmazással. Az alkalmazás egy JavaScript-előtérrel és REST-végponttal rendelkező "teendőlista". A rugalmas Azure Database for PostgreSQL-kiszolgáló biztosítja az alkalmazás adatmegőrzési rétegét. A cikk bemutatja, hogyan tesztelheti az alkalmazást helyileg, és hogyan helyezheti üzembe a Container Appsben.

Előfeltételek

  • Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
  • Helyi gép előkészítése Unix-szerű operációs rendszerrel – például Ubuntu, macOS vagy Linuxos Windows-alrendszer.
  • Telepítse a Java SE 17-es vagy újabb verzióját – például az OpenJDK Microsoft-buildet.
  • Telepítse a Maven 3.9.8-es vagy újabb verzióját.
  • Telepítse a Docker-t az operációs rendszerére.
  • Telepítse a jq-t.
  • Telepítse a cURL-t.
  • Telepítse a Quarkus CLI 3.12.1-es vagy újabb verzióját.
  • Telepítse az Azure CLI-t az Azure CLI-parancsok futtatásához.
    • Jelentkezzen be az Azure CLI-be a az login paranccsal. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért tekintse meg a Bejelentkezés az Azure-ba az Azure CLI-vel című témakört.
    • Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata és kezelése az Azure CLI-vel.
    • Futtassa a az version a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra való frissítéshez futtassa a az upgrade. Ez a cikk az Azure CLI legalább 2.61.0-s verzióját igényli.

Az alkalmazásprojekt létrehozása

A cikkhez tartozó Java-mintaprojekt klónozásához használja az alábbi parancsokat. A minta a GitHubon található.

git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2025-05-08
cd aca-quarkus

Ha megjelenik egy üzenet arról, hogy detached HEAD állapotban van, ezt az üzenetet nyugodtan figyelmen kívül hagyhatja. Mivel ez a cikk nem igényel véglegesítést, detached HEAD állapot megfelelő.

A Quarkus-alkalmazás helyi tesztelése

Az ebben a szakaszban ismertetett lépések bemutatják, hogyan futtathatja az alkalmazást helyileg.

A Quarkus támogatja a nem konfigurált szolgáltatások automatikus kiépítését fejlesztési és tesztelési módban. A Quarkus erre a képességre dev szolgáltatásként hivatkozik. Tegyük fel, hogy tartalmaz egy Quarkus-funkciót, például egy adatbázis-szolgáltatáshoz való csatlakozást. Tesztelni szeretné az alkalmazást, de még nem konfigurálta teljes mértékben a kapcsolatot egy valódi adatbázissal. A Quarkus automatikusan elindítja az adott szolgáltatás csonkverzióját, és csatlakoztatja az alkalmazást hozzá. További információ: A Dev Services áttekintése a Quarkus dokumentációjában.

Győződjön meg arról, hogy a tárolókörnyezet fut, és a következő paranccsal lépjen be a Quarkus fejlesztői módba:

quarkus dev

Ahelyett quarkus dev, hogy ugyanezt a dolgot maven használatával mvn quarkus:dev.

Előfordulhat, hogy a rendszer megkérdezi, hogy szeretne-e telemetriát küldeni a Quarkus fejlesztői módjának használatáról. Ha igen, válaszoljon úgy, ahogy szeretné.

A Quarkus fejlesztői mód lehetővé teszi az élő újratöltést háttér-összeállítással. Ha módosítja az alkalmazás forráskódjának bármely aspektusát, és frissíti a böngészőt, láthatja a módosításokat. Ha bármilyen probléma merül fel a fordítással vagy az üzembe helyezéssel kapcsolatban, egy hibaoldal tájékoztatja Önt. A Quarkus fejlesztői mód az 5005-ös porton figyeli a hibakeresőt. Ha a futtatás előtt meg szeretné várni, hogy a hibakereső csatolva legyen, adja át -Dsuspend a parancssort. Ha egyáltalán nem szeretné, hogy a hibakeresőt használja -Ddebug=false.

A kimenetnek a következő példához hasonlóan kell kinéznie:

__  ____  __  _____   ___  __ ____  ______
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
INFO  [io.quarkus] (Quarkus Main Thread) quarkus-todo-demo-app-aca 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.2.0.Final) started in 14.826s. Listening on: http://localhost:8080
INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [agroal, cdi, hibernate-orm, hibernate-validator, jdbc-postgresql, narayana-jta, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]

--
Tests paused
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>

Nyomja le a w billentyűt azon a terminálon, amelyen a Quarkus fejlesztői mód fut. A w billentyű megnyitja az alapértelmezett webböngészőt az Todo alkalmazás megjelenítéséhez. Az alkalmazás grafikus felhasználói felületét http://localhost:8080 közvetlenül is elérheti.

Képernyőkép a Todo mintaalkalmazásról.

Próbáljon meg kijelölni néhány teendőelemet a teendőlistában. A felhasználói felület áthúzott szövegstílusú kijelölést jelez. Az alábbi képernyőképen látható módon új teendőelemet is hozzáadhat a teendőlistához a Todo-alkalmazások ellenőrzése és az ENTER billentyű lenyomásával:

Képernyőkép a Todo mintaalkalmazásról új elemek hozzáadásával.

A RESTful API (/api) elérése a helyi PostgreSQL-adatbázisban tárolt összes teendőelem lekéréséhez:

curl --verbose http://localhost:8080/api | jq .

A kimenetnek a következő példához hasonlóan kell kinéznie:

* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /api HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-length: 664
< Content-Type: application/json;charset=UTF-8
<
{ [664 bytes data]
100   664  100   664    0     0  13278      0 --:--:-- --:--:-- --:--:-- 15441
* Connection #0 to host localhost left intact
[
  {
    "id": 1,
    "title": "Introduction to Quarkus Todo App",
    "completed": false,
    "order": 0,
    "url": null
  },
  {
    "id": 2,
    "title": "Quarkus on Azure App Service",
    "completed": false,
    "order": 1,
    "url": "https://learn.microsoft.com/en-us/azure/app-service/quickstart-java"
  },
  {
    "id": 3,
    "title": "Quarkus on Azure Container Apps",
    "completed": false,
    "order": 2,
    "url": "https://learn.microsoft.com/en-us/training/modules/deploy-java-quarkus-azure-container-app-postgres/"
  },
  {
    "id": 4,
    "title": "Quarkus on Azure Functions",
    "completed": false,
    "order": 3,
    "url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-quarkus"
  },
  {
    "id": 5,
    "title": "Verify Todo apps",
    "completed": false,
    "order": 5,
    "url": null
  }
]

Nyomja le a q billentyűt a Quarkus fejlesztői módból való kilépéshez.

Azure-erőforrások létrehozása a Quarkus-alkalmazás futtatásához

Az ebben a szakaszban ismertetett lépések bemutatják, hogyan hozhatja létre a következő Azure-erőforrásokat a Quarkus-mintaalkalmazás futtatásához:

  • Rugalmas Azure Database for PostgreSQL-kiszolgáló
  • Azure Container Registry
  • Azure Container Apps

Ezen erőforrások némelyikének egyedi névvel kell rendelkeznie az Azure-előfizetés hatókörén belül. Az egyediség biztosítása érdekében használhatja a monogramot, a sorrendet, a dátumot és az utótagmintát . A minta alkalmazásához nevezze el az erőforrásokat úgy, hogy felsorolja a monogramot, a sorszámot, a mai dátumot és valamilyen erőforrás-specifikus utótagot – például rg az "erőforráscsoportot". A következő környezeti változók ezt a mintát használják. Cserélje le a helyőrző értékeket UNIQUE_VALUELOCATION a saját értékeire, és futtassa a parancsokat a terminálban.

export UNIQUE_VALUE=<your unique value, such as mjg101424>
export RESOURCE_GROUP_NAME=${UNIQUE_VALUE}rg-passwordless
export LOCATION=<your desired Azure region for deploying your resources - for example, eastus>
export REGISTRY_NAME=${UNIQUE_VALUE}regpasswordless
export DB_SERVER_NAME=${UNIQUE_VALUE}dbpasswordless
export DB_NAME=demodb
export ACA_ENV=${UNIQUE_VALUE}envpasswordless
export ACA_NAME=${UNIQUE_VALUE}acapasswordless

Ezután hozzon létre egy erőforráscsoportot a következő paranccsal:

az group create \
    --name $RESOURCE_GROUP_NAME \
    --location $LOCATION

Rugalmas Azure Database for PostgreSQL-kiszolgálópéldány létrehozása

A rugalmas Azure Database for PostgreSQL-kiszolgáló egy teljes mértékben felügyelt adatbázis-szolgáltatás, amely részletesebb vezérlést és rugalmasságot biztosít az adatbázis-kezelési funkciók és a konfigurációs beállítások felett. Ez a szakasz bemutatja, hogyan hozhat létre rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt az Azure CLI használatával. További információért lásd: Gyorsindítás: Az Azure Database for PostgreSQL példány létrehozása – rugalmas kiszolgáló.

Hozzon létre egy rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt az alábbi paranccsal:

az postgres flexible-server create \
    --name $DB_SERVER_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --database-name $DB_NAME \
    --public-access None \
    --sku-name Standard_B1ms \
    --tier Burstable \
    --active-directory-auth Enabled

A kiszolgálói, adatbázis-, rendszergazdai és tűzfalszabályok létrehozása néhány percet vesz igénybe. Ha a parancs sikeres, a kimenet az alábbi példához hasonlóan néz ki:

{
  "connectionString": "postgresql://REDACTED:REDACTED@<DB_SERVER_NAME>.postgres.database.azure.com/<DB_NAME>?sslmode=require",
  "databaseName": "<DB_NAME>",
  "host": "<DB_SERVER_NAME>.postgres.database.azure.com",
  "id": "/subscriptions/REDACTED/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<DB_SERVER_NAME>",
  "location": "East US",
  "password": "REDACTED",
  "resourceGroup": "<RESOURCE_GROUP_NAME>",
  "skuname": "Standard_B1ms",
  "username": "REDACTED",
  "version": "13"
}

Adja hozzá az aktuális bejelentkezett felhasználót Microsoft Entra-rendszergazdaként a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz az alábbi parancsokkal:

ENTRA_ADMIN_NAME=$(az ad signed-in-user show --query userPrincipalName -o tsv)
az postgres flexible-server ad-admin create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server-name $DB_SERVER_NAME \
    --display-name $ENTRA_ADMIN_NAME \
    --object-id $(az ad signed-in-user show --query id -o tsv)

A sikeres kimenet egy JSON-objektum, beleértve a tulajdonságot "type": "Microsoft.DBforPostgreSQL/flexibleServers/administrators"is.

Microsoft Azure Container Registry-példány létrehozása

Mivel a Quarkus egy natív felhőalapú technológia, beépített támogatást nyújt a Container Appsben futó tárolók létrehozásához. A Container Apps teljes mértékben attól függ, hogy rendelkezik-e egy tárolóregisztrációs adatbázissal, amelyből megtalálja a futtatandó tárolólemezképeket. A Container Apps beépített támogatást nyújt az Azure Container Registryhez.

Használja a az acr create parancsot a Container Registry-példány létrehozásához. Az alábbi példa n Container Registry-példányt hoz létre a környezeti változó ${REGISTRY_NAME}értékével elnevezve:

az acr create \
    --resource-group $RESOURCE_GROUP_NAME \
    --location ${LOCATION} \
    --name $REGISTRY_NAME \
    --sku Basic

Rövid idő elteltével a következő sorokat tartalmazó JSON-kimenetnek kell megjelennie:

  "provisioningState": "Succeeded",
  "publicNetworkAccess": "Enabled",
  "resourceGroup": "<YOUR_RESOURCE_GROUP>",

A tárolóregisztrációs adatbázispéldány bejelentkezési kiszolgálójának lekérése az alábbi paranccsal:

export LOGIN_SERVER=$(az acr show \
    --name $REGISTRY_NAME \
    --query 'loginServer' \
    --output tsv)
echo $LOGIN_SERVER

A Docker csatlakoztatása az Azure Container Registry-példányhoz

Jelentkezzen be a tárolóregisztrációs adatbázispéldányba. A bejelentkezéssel leküldhet egy képet. A következő paranccsal jelentkezzen be a beállításjegyzékbe:

az acr login --name $REGISTRY_NAME

Ha sikeresen bejelentkezett a tárolóregisztrációs adatbázispéldányba, a parancs kimenetének végén Login Succeeded kell látnia.

Környezet létrehozása

Az Azure Container Apps környezete biztonságos határt hoz létre a tárolóalkalmazások egy csoportja körül. Az ugyanabban a környezetben üzembe helyezett Tárolóalkalmazások ugyanabban a virtuális hálózaton vannak üzembe helyezve, és naplókat írnak ugyanarra a Log Analytics-munkaterületre.

Ha először hoz létre Azure Container Apps-környezetet, valószínűleg regisztrálnia kell a Microsoft.App és Microsoft.OperationalInsights névtereket. A névterek regisztrálásához használja az alábbi parancsokat:

az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait

Most az az containerapp env create paranccsal hozzon létre egy környezetet, ahogyan az a következő példában látható:

az containerapp env create \
    --resource-group $RESOURCE_GROUP_NAME \
    --location $LOCATION \
    --name $ACA_ENV

Ha a rendszer egy bővítmény telepítésére kéri, válaszoljon az Y válaszra.

Natív felhőkonfiguráció testreszabása

Natív felhőtechnológiaként a Quarkus lehetővé teszi a tárolólemezképek automatikus generálásának lehetőségét. További információ: Tárolórendszerképek. A fejlesztők ezután üzembe helyezhetik az alkalmazás lemezképét egy tárolóalapú célplatformon, például az Azure Container Appsben.

A tárolólemezkép létrehozásához használja a következő parancsot a container-image-jib bővítmény hozzáadásához a helyi terminálban:

quarkus ext add container-image-jib

A Quarkus módosítja a POM-t, hogy a bővítmény szerepeljen a <dependencies>. Ha a rendszer JBangnevű elemet kér, válaszoljon igennel, és engedélyezze a telepítést.

A kimenetnek a következő példához hasonlóan kell kinéznie:

[SUCCESS] ✅  Extension io.quarkus:quarkus-container-image-jib has been installed

Nyissa meg a pom.xml fájlt, és a bővítménynek a következő függőségeket kell látnia container-image-jib :

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-container-image-jib</artifactId>
</dependency>

Ezután adja hozzá a következő függőségeket a pom.xml fájlhoz, hogy támogassa a jelszó nélküli hitelesítést a rugalmas Azure Database for PostgreSQL-kiszolgálóval:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity-extensions</artifactId>
    <version>1.1.20</version>
</dependency>

Natív felhőtechnológiaként a Quarkus támogatja a konfigurációs profilok fogalmát. A Quarkus három beépített profillal rendelkezik:

  • dev - Fejlesztési módban aktiválva.
  • test - Teszt futtatásakor aktiválva.
  • prod - Az alapértelmezett profil, ha nem fejlesztési vagy tesztelési módban fut.

A Quarkus igény szerint tetszőleges számú elnevezett profilt támogat.

A szakasz további lépései arra utasítják, hogy az src/main/resources/application.properties fájlban feloldja és testre szabja az értékeket. A bevezető # %prod. karakter eltávolításával győződjön meg arról, hogy a # kezdődő sorok nem lesznek kibontva.

Az %prod. előtag azt jelzi, hogy ezek a tulajdonságok aktívak a prod profilban való futtatáskor. A konfigurációs profilokról további információt a Quarkus dokumentációjában talál.

Az adatbázis konfigurációjának vizsgálata

A tulajdonságok kibontása után a src/main/resources/application.properties fájl adatbázis-konfigurációjának a következő példához hasonlóan kell kinéznie:

# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=
%prod.quarkus.datasource.username=
%prod.quarkus.datasource.password=
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file

Távolítsa el a %prod.quarkus.datasource.password tulajdonságot, mert nem szükséges jelszó nélküli hitelesítést használni a rugalmas Azure Database for PostgreSQL-kiszolgálóval. Frissítse a többi adatbázis-kapcsolattal kapcsolatos tulajdonságot %prod.quarkus.datasource.jdbc.url és %prod.quarkus.datasource.username az alábbi példában látható értékeket. A végső konfigurációnak a következő példához hasonlóan kell kinéznie:

# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://${AZURE_POSTGRESQL_HOST}:${AZURE_POSTGRESQL_PORT}/${AZURE_POSTGRESQL_DATABASE}?\
authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin\
&sslmode=require
%prod.quarkus.datasource.username=${AZURE_POSTGRESQL_USERNAME}
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file

A ( , ${AZURE_POSTGRESQL_HOST}) ${AZURE_POSTGRESQL_PORT}${AZURE_POSTGRESQL_DATABASE} értéket ${AZURE_POSTGRESQL_USERNAME}az Azure Container Apps-környezet adja meg futásidőben a Service Connector jelszó nélküli bővítményével a cikk későbbi részében.

Általában nem számít arra, hogy az adatbázisban tárolt adatok el lesznek dobva és újra feltöltve lesznek a mintaadatokkal egy éles környezetben. Ezért láthatja, hogy a séma quarkus.hibernate-orm.database.generation úgy van megadva create , hogy az alkalmazás csak akkor hozza létre a sémát, ha az nem létezik a kezdeti indításkor. Emellett az adatbázist előzetesen nem tölti ki mintaadatokkal, mert hibernate-orm.sql-load-scriptno-fileként van megadva. Ez a beállítás eltér attól, hogy az alkalmazást helyileg futtatta fejlesztési módban. A fejlesztési módban quarkus.hibernate-orm.database.generationhibernate-orm.sql-load-script az alapértelmezett értékek a következők és azok drop-and-createimport.sql, ami azt jelenti, hogy az alkalmazás mindig elveti és újra létrehozza az adatbázissémát, és betölti a import.sql definiált adatokat. A import.sql fájl a Quarkus kényelmi létesítménye. Ha az src/main/resources/import.sql fájl létezik a Quarkus jarban, és a hibernate-orm.sql-load-script tulajdonság import.sqlértéke az, akkor a fájlban lévő SQL DML-utasítások az alkalmazás indítási időpontjában lesznek végrehajtva.

Quarkus-alkalmazás helyi tesztelése rugalmas Azure Database for PostgreSQL-kiszolgálóval

Mielőtt üzembe helyezné a Quarkus alkalmazást az Azure Container Appsben, tesztelje a kapcsolatot a rugalmas Azure Database for PostgreSQL-kiszolgálópéldánysal helyileg.

Először adja hozzá a helyi IP-címet a rugalmas Azure Database for PostgreSQL-kiszolgálópéldány tűzfalszabályaihoz az alábbi parancsokkal:

export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)

az postgres flexible-server firewall-rule create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $DB_SERVER_NAME \
    --rule-name $DB_SERVER_NAME-database-allow-local-ip \
    --start-ip-address $AZ_LOCAL_IP_ADDRESS \
    --end-ip-address $AZ_LOCAL_IP_ADDRESS

Ezután állítsa be a következő környezeti változókat az előző terminálban. Ezek a környezeti változók a helyileg futó Quarkus-alkalmazásból csatlakoznak a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz:

export AZURE_POSTGRESQL_HOST=${DB_SERVER_NAME}.postgres.database.azure.com
export AZURE_POSTGRESQL_PORT=5432
export AZURE_POSTGRESQL_DATABASE=${DB_NAME}
export AZURE_POSTGRESQL_USERNAME=${ENTRA_ADMIN_NAME}

Futtassa helyileg a Quarkus alkalmazást a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz való kapcsolat teszteléséhez. Az alkalmazás éles módban való elindításához használja az alábbi parancsokat:

mvn clean package -DskipTests
java -jar target/quarkus-app/quarkus-run.jar

A Todo alkalmazás eléréséhez nyisson meg egy új webböngészőt, és navigáljon a http://localhost:8080oldalra. Ugyanazt a Todo-alkalmazást kell látnia, mint amikor az alkalmazást helyi fejlesztési módban futtatta, todo elemek nélkül.

Az alkalmazás leállításához nyomja le a Control+Cbillentyűt.

A tárolórendszerkép létrehozása és leküldése a tárolóregisztrációs adatbázisba

Most az alábbi paranccsal hozza létre magát az alkalmazást. Ez a parancs a Jib-bővítményt használja a tárolólemezkép létrehozásához.

export TODO_QUARKUS_IMAGE_NAME=todo-quarkus-aca
export TODO_QUARKUS_IMAGE_TAG=${LOGIN_SERVER}/${TODO_QUARKUS_IMAGE_NAME}:1.0
quarkus build -Dquarkus.container-image.build=true -Dquarkus.container-image.image=${TODO_QUARKUS_IMAGE_TAG} --no-tests 

A kimenetnek a következővel kell végződnie BUILD SUCCESS: .

Az alábbi példában látható módon ellenőrizheti, hogy a tárolólemezkép is létrejön-e a docker parancssor (CLI) használatával:

docker images | grep ${TODO_QUARKUS_IMAGE_NAME}

A kimenet az alábbi példához hasonlóan néz ki:

<LOGIN_SERVER_VALUE>/todo-quarkus-aca   1.0       0804dfd834fd   2 minutes ago   407MB

A tárolólemezképek leküldése a tárolóregisztrációs adatbázisba az alábbi paranccsal:

docker push ${TODO_QUARKUS_IMAGE_TAG}

A kimenetnek a következőképpen kell kinéznie:

The push refers to repository [<LOGIN_SERVER_VALUE>/todo-quarkus-aca]
188a550fce3d: Pushed
4e3afea591e2: Pushed
1db0eba807a6: Pushed
c72d9ccda0b2: Pushed
d7819b8a2d18: Pushed
d0e5cba6b262: Pushed
e0bac91f0f10: Pushed
1.0: digest: sha256:f9ccb476e2388efa0dfdf817625a94f2247674148a69b7e4846793e63c8be994 size: 1789

A Quarkus-alkalmazás üzembe helyezése az Azure Container Appsben

Most, hogy leküldte az alkalmazás lemezképét a tárolóregisztrációs adatbázisba, az alábbi paranccsal hozzon létre egy Azure Container Apps-példányt az alkalmazás futtatásához, miután lekérte a lemezképet a tárolóregisztrációs adatbázisból:

az containerapp create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $ACA_NAME \
    --image $TODO_QUARKUS_IMAGE_TAG \
    --environment $ACA_ENV \
    --registry-server $LOGIN_SERVER \
    --registry-identity system \
    --target-port 8080 \
    --ingress 'external' \
    --min-replicas 1

A sikeres kimenet egy JSON-objektum, beleértve a tulajdonságot "type": "Microsoft.App/containerApps"is.

Ezután csatlakoztassa a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt a tárolóalkalmazáshoz a Service Connector használatával az alábbi lépések végrehajtásával:

  1. Telepítse a Service Connector jelszó nélküli bővítményét az Azure CLI-hez az alábbi paranccsal:

    az extension add --name serviceconnector-passwordless --upgrade --allow-preview true
    
  2. Csatlakoztassa az adatbázist a tárolóalkalmazáshoz egy rendszer által hozzárendelt felügyelt identitással az alábbi paranccsal:

    az containerapp connection create postgres-flexible \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $ACA_NAME \
        --target-resource-group $RESOURCE_GROUP_NAME \
        --server $DB_SERVER_NAME \
        --database $DB_NAME \
        --system-identity \
        --container $ACA_NAME
    

    A sikeres kimenet egy JSON-objektum, beleértve a tulajdonságot "type": "microsoft.servicelinker/linkers"is.

Szerezze be a Todo-alkalmazás eléréséhez szükséges teljes URL-címet az alábbi paranccsal:

export QUARKUS_URL=https://$(az containerapp show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $ACA_NAME \
    --query properties.configuration.ingress.fqdn -o tsv)
echo $QUARKUS_URL

Nyisson meg egy új webböngészőt a következő értékre ${QUARKUS_URL}: . Ha a weblap nem megfelelően jelenik meg, várjon egy ideig, és frissítse a lapot.

Ezután adjon hozzá egy új teendőelemet a szöveggel Deployed the Todo app to Container Apps. Jelölje ki ezt az elemet, ha befejezettként szeretné megjelölni.

Képernyőkép a Container Appsben futó Todo mintaalkalmazásról.

A RESTful API (/api) elérése az Azure Database for PostgreSQL-ben tárolt teendők lekéréséhez, ahogyan az alábbi példában látható:

curl --verbose -k ${QUARKUS_URL}/api | jq .

A kimenetnek a következő példához hasonlóan kell kinéznie:

* Connected to <aca-name>.<random-id>.eastus.azurecontainerapps.io (20.231.235.79) port 443 (#0)
> GET /api HTTP/2
> Host: <aca-name>.<random-id>.eastus.azurecontainerapps.io
> user-agent: curl/7.88.1
> accept: */*
>
< HTTP/2 200
< content-length: 88
< content-type: application/json;charset=UTF-8
<
[
  {
    "id": 1,
    "title": "Deployed the Todo app to Container Apps",
    "completed": true,
    "order": 1,
    "url": null
  }
]

Ellenőrizze, hogy az adatbázis frissült-e

Az alábbi paranccsal ellenőrizze, hogy az adatbázis frissült-e az új teendővel:

export ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
az postgres flexible-server execute \
    --admin-user $ENTRA_ADMIN_NAME \
    --admin-password $ACCESS_TOKEN \
    --name $DB_SERVER_NAME \
    --database-name $DB_NAME \
    --querytext "select * from todo;"

Ha a rendszer egy bővítmény telepítésére kéri, válaszoljon az Y válaszra.

A kimenetnek az alábbi példához hasonlóan kell kinéznie, és ugyanazt az elemet kell tartalmaznia a Todo alkalmazás grafikus felhasználói felületének korábban látható elemével:

Successfully connected to <DB_SERVER_NAME>.
Ran Database Query: 'select * from todo;'
Retrieving first 30 rows of query output, if applicable.
Closed the connection to <DB_SERVER_NAME>
[
  {
    "completed": true,
    "id": 1,
    "ordering": 1,
    "title": "Deployed the Todo app to Container Apps",
    "url": null
  }
]

Ha végzett, törölje azt a tűzfalszabályt, amely lehetővé teszi, hogy a helyi IP-cím hozzáférjen a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz az alábbi paranccsal:

az postgres flexible-server firewall-rule delete \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $DB_SERVER_NAME \
    --rule-name $DB_SERVER_NAME-database-allow-local-ip \
    --yes

Az erőforrások eltávolítása

Az Azure-díjak elkerülése érdekében távolítsa el a szükségtelen erőforrásokat. Ha már nincs szükség a klaszterre, az az group delete paranccsal távolítsa el az erőforráscsoportot, a konténerszolgáltatást, a konténerregisztrációt és az összes kapcsolódó erőforrást.

git reset --hard
docker rmi ${TODO_QUARKUS_IMAGE_TAG}
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

Érdemes lehet törölni a docker rmi Quarkus fejlesztői mód által létrehozott és postgres tárolólemezképeket istestcontainers.

Következő lépések