Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 loginparanccsal. 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 versiona telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra való frissítéshez futtassa aaz upgrade. Ez a cikk az Azure CLI legalább 2.61.0-s verzióját igényli.
- Jelentkezzen be az Azure CLI-be a
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.
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:
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:
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 trueCsatlakoztassa 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_NAMEA 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.
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.