Nasazení aplikace v Javě pomocí Quarkus v Azure Container Apps
V tomto článku se dozvíte, jak rychle nasadit Red Hat Quarkus v Microsoft Azure Container Apps pomocí jednoduché aplikace CRUD. Aplikace je seznam úkolů s front-endem JavaScriptu a koncovým bodem REST. Flexibilní server Azure Database for PostgreSQL poskytuje vrstvu trvalosti aplikace. V článku se dozvíte, jak otestovat aplikaci místně a nasadit ji do Container Apps.
Požadavky
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Připravte místní počítač s nainstalovaným operačním systémem Unix , například Ubuntu, macOS nebo Subsystém Windows pro Linux.
- Nainstalujte implementaci Java SE verze 17 nebo novější – například sestavení OpenJDK od Microsoftu.
- Nainstalujte Maven verze 3.9.8 nebo vyšší.
- Nainstalujte Docker nebo Podman pro váš operační systém.
- Nainstalujte jq.
- Nainstalujte cURL.
- Nainstalujte rozhraní příkazového řádku Quarkus verze 3.12.1 nebo vyšší.
- Nainstalujte Azure CLI a spusťte příkazy Azure CLI.
- Přihlaste se k Azure CLI pomocí příkazu az login . Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení k Azure pomocí Azure CLI.
- Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
- Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade. Tento článek vyžaduje aspoň verzi 2.61.0 Azure CLI.
Vytvoření projektu aplikace
Pomocí následujícího příkazu naklonujte ukázkový projekt Java pro tento článek. Ukázka je na GitHubu.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2024-10-14
cd aca-quarkus
Pokud se zobrazí zpráva o tom, že je v odpojeném stavu HEAD , je tato zpráva v bezpečí ignorovat. Vzhledem k tomu, že tento článek nevyžaduje potvrzení, je vhodné odpojit stav HEAD.
Místní testování aplikace Quarkus
Kroky v této části ukazují, jak aplikaci spustit místně.
Quarkus podporuje automatické zřizování nekonfigurovaných služeb ve vývojovém a testovacím režimu. Quarkus se na tuto funkci odkazuje jako na vývojové služby. Řekněme, že zahrnete funkci Quarkus, například připojení k databázové službě. Chcete aplikaci otestovat, ale ještě jste nenakonfigurovali připojení k reálné databázi. Quarkus automaticky spustí verzi zástupných procedur příslušné služby a připojí k ní vaši aplikaci. Další informace najdete v tématu Přehled služby Dev Services v dokumentaci k Quarkus.
Ujistěte se, že je vaše prostředí kontejneru, Docker nebo Podman spuštěné, a pomocí následujícího příkazu přejděte do vývojového režimu Quarkus:
quarkus dev
quarkus dev
Místo toho můžete s Mavenem dosáhnout totéž pomocí mvn quarkus:dev
.
Může se zobrazit dotaz, jestli chcete odesílat telemetrii využití vývojového režimu Quarkus. Pokud ano, odpovězte tak, jak chcete.
Režim vývoje Quarkus umožňuje živé opětovné načítání s kompilací na pozadí. Pokud upravíte jakýkoli aspekt zdrojového kódu aplikace a aktualizujete prohlížeč, uvidíte změny. Pokud dojde k problémům s kompilací nebo nasazením, zobrazí se chybová stránka s informacemi. Režim vývoje Quarkus naslouchá ladicímu programu na portu 5005. Pokud chcete počkat na připojení ladicího programu před spuštěním, předejte -Dsuspend
ho na příkazovém řádku. Pokud ladicí program vůbec nechcete, můžete použít -Ddebug=false
.
Výstup by měl vypadat jako v následujícím příkladu:
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
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>
Stiskněte klávesu w na terminálu, kde běží vývojový režim Quarkus. Klávesa w otevře výchozí webový prohlížeč pro zobrazení Todo
aplikace. K grafickému uživatelskému rozhraní http://localhost:8080
aplikace můžete přistupovat také přímo.
Zkuste vybrat několik položek úkolů v seznamu úkolů. Uživatelské rozhraní označuje výběr pomocí přeškrtnutého stylu textu. Novou položku seznamu úkolů můžete přidat také zadáním příkazu Ověřit aplikace todo a stisknutím klávesy ENTER, jak je znázorněno na následujícím snímku obrazovky:
Přístup k rozhraní RESTful API (/api
) a získejte všechny položky úkolů, které se ukládají v místní databázi PostgreSQL:
curl --verbose http://localhost:8080/api | jq .
Výstup by měl vypadat jako v následujícím příkladu:
* 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://video2.skills-academy.com/en-us/azure/developer/java/eclipse-microprofile/deploy-microprofile-quarkus-java-app-with-maven-plugin"
},
{
"id": 3,
"title": "Quarkus on Azure Container Apps",
"completed": false,
"order": 2,
"url": "https://video2.skills-academy.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://video2.skills-academy.com/en-us/azure/azure-functions/functions-create-first-quarkus"
},
{
"id": 5,
"title": "Verify Todo apps",
"completed": false,
"order": 5,
"url": null
}
]
Stisknutím klávesy q ukončete vývojový režim Quarkus.
Vytvoření prostředků Azure pro spuštění aplikace Quarkus
Kroky v této části ukazují, jak vytvořit následující prostředky Azure pro spuštění ukázkové aplikace Quarkus:
- Flexibilní server Azure Database for PostgreSQL
- Azure Container Registry
- Azure Container Apps
Některé z těchto prostředků musí mít jedinečné názvy v rozsahu předplatného Azure. K zajištění této jedinečnosti můžete použít iniciály, posloupnost, datum, vzor přípony . Pokud chcete tento vzor použít, pojmenujte prostředky uvedením iniciály, určitého pořadového čísla, dnešního data a nějaké přípony specifické pro prostředek – například rg
"skupina prostředků". Tento vzor používají následující proměnné prostředí. Zástupné hodnoty nahraďte UNIQUE_VALUE
vlastními hodnotami a LOCATION
spusťte příkazy v terminálu.
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
Dále pomocí následujícího příkazu vytvořte skupinu prostředků:
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION
Vytvoření flexibilního serveru Azure Database for PostgreSQL
Flexibilní server Azure Database for PostgreSQL je plně spravovaná databázová služba navržená tak, aby poskytovala podrobnější kontrolu a flexibilitu nad funkcemi správy databází a nastavením konfigurace. V této části se dozvíte, jak vytvořit instanci flexibilního serveru Azure Database for PostgreSQL pomocí Azure CLI. Další informace najdete v tématu Rychlý start: Vytvoření instance flexibilního serveru Azure Database for PostgreSQL pomocí Azure CLI.
Pomocí následujícího příkazu vytvořte instanci flexibilního serveru Azure Database for PostgreSQL:
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
Vytvoření serveru, databáze, uživatele správce a pravidel brány firewall trvá několik minut. Pokud je příkaz úspěšný, výstup vypadá podobně jako v následujícím příkladu:
{
"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"
}
Pomocí následujících příkazů přidejte aktuální přihlášeného uživatele jako správce Microsoft Entra do instance flexibilního serveru Azure Database for PostgreSQL:
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)
Úspěšný výstup je objekt JSON včetně vlastnosti "type": "Microsoft.DBforPostgreSQL/flexibleServers/administrators"
.
Vytvoření instance služby Microsoft Azure Container Registry
Vzhledem k tomu, že Quarkus je nativní cloudová technologie, má integrovanou podporu pro vytváření kontejnerů, které běží v Container Apps. Container Apps je zcela závislý na tom, že má registr kontejneru, ze kterého najde image kontejneru ke spuštění. Container Apps má integrovanou podporu služby Azure Container Registry.
K vytvoření instance Container Registry použijte příkaz az acr create. Následující příklad vytvoří n Instance Container Registry pojmenovaná s hodnotou proměnné prostředí ${REGISTRY_NAME}
:
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--location ${LOCATION} \
--name $REGISTRY_NAME \
--sku Basic
Po krátké době byste měli vidět výstup JSON, který obsahuje následující řádky:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "<YOUR_RESOURCE_GROUP>",
Pomocí následujícího příkazu získejte přihlašovací server pro instanci služby Container Registry:
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
echo $LOGIN_SERVER
Připojení dockeru k instanci služby Container Registry
Přihlaste se k instanci služby Container Registry. Přihlášení umožňuje nasdílení image. Pomocí následujícího příkazu se přihlaste k registru:
az acr login --name $REGISTRY_NAME
Pokud místo Dockeru používáte Podman, proveďte potřebné změny příkazu.
Pokud jste se úspěšně přihlásili k instanci Container Registry, měli byste se podívat Login Succeeded
na konci výstupu příkazu.
Vytvořit prostředí
Prostředí v Azure Container Apps vytvoří zabezpečenou hranici kolem skupiny kontejnerových aplikací. KontejnerOvé aplikace nasazené do stejného prostředí se nasazují ve stejné virtuální síti a zapisují protokoly do stejného pracovního prostoru služby Log Analytics. Pomocí příkazu az containerapp env create vytvořte prostředí, jak je znázorněno v následujícím příkladu:
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Pokud se zobrazí výzva k instalaci rozšíření, odpovězte na Y.
Přizpůsobení nativní konfigurace cloudu
Jako nativní cloudová technologie nabízí Quarkus možnost automaticky generovat image kontejnerů. Další informace najdete v tématu Image kontejneru. Vývojáři pak můžou image aplikace nasadit na cílovou kontejnerizovanou platformu – například Azure Container Apps.
Pokud chcete vygenerovat image kontejneru, přidejte container-image-jib
rozšíření do místního terminálu pomocí následujícího příkazu:
quarkus ext add container-image-jib
Quarkus upraví POM tak, aby se zajistilo, že rozšíření je součástí <dependencies>
. Pokud se zobrazí výzva k instalaci s názvem JBang
, odpovězte ano a povolte instalaci.
Výstup by měl vypadat jako v následujícím příkladu:
[SUCCESS] ✅ Extension io.quarkus:quarkus-container-image-jib has been installed
Otevřete soubor pom.xml a měli byste vidět následující závislosti přidané příponoucontainer-image-jib
:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-container-image-jib</artifactId>
</dependency>
Pak do souboru pom.xml přidejte následující závislosti, které podporují ověřování bez hesla s flexibilním serverem Azure Database for PostgreSQL:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.1.20</version>
</dependency>
Jako nativní technologie cloudu podporuje Quarkus pojem konfiguračních profilů. Quarkus má následující tři předdefinované profily:
dev
- Aktivováno v režimu vývoje.test
- Aktivuje se při spouštění testů.prod
– Výchozí profil, pokud neběží ve vývojovém nebo testovacím režimu.
Quarkus podle potřeby podporuje libovolný počet pojmenovaných profilů.
Zbývající kroky v této části vás nasměruje na zrušení komentáře a přizpůsobení hodnot v souboru src/main/resources/application.properties . Ujistěte se, že všechny řádky začínající # %prod.
na začátku jsou nekommentovány odebráním úvodních #
řádků .
Předpona %prod.
označuje, že tyto vlastnosti jsou aktivní při spuštění v prod
profilu. Další informace o konfiguračních profilech najdete v dokumentaci k Quarkus.
Prozkoumání konfigurace databáze
Po zrušení komentáře vlastností by konfigurace databáze v souboru src/main/resources/application.properties měla vypadat jako v následujícím příkladu:
# 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
Odeberte vlastnost %prod.quarkus.datasource.password
, protože při použití ověřování bez hesla s flexibilním serverem Azure Database for PostgreSQL není potřeba. Aktualizujte další vlastnosti %prod.quarkus.datasource.jdbc.url
související s připojením k databázi a %prod.quarkus.datasource.username
hodnotami, jak je znázorněno v následujícím příkladu. Konečná konfigurace by měla vypadat jako v následujícím příkladu:
# 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
Hodnotu ${AZURE_POSTGRESQL_HOST}
, ${AZURE_POSTGRESQL_PORT}
a ${AZURE_POSTGRESQL_DATABASE}
${AZURE_POSTGRESQL_USERNAME}
jsou poskytovány prostředím Azure Container Apps za běhu pomocí rozšíření bez hesla konektoru služby dále v tomto článku.
Obecně neočekáváte, že se data uložená v databázi zahodí a znovu zahrnou s ukázkovými daty v produkčním prostředí. Proto vidíte, že schéma je quarkus.hibernate-orm.database.generation
určeno tak create
, aby aplikace vytvářela schéma pouze v případě, že v počátečním spuštění neexistuje. Kromě toho databáze není předem vyplněna žádnými ukázkovými daty, protože hibernate-orm.sql-load-script
je určena jako no-file
. Toto nastavení se liší od toho, kdy jste aplikaci spustili místně ve vývojovém režimu. Výchozí hodnoty ve vývojovém režimu jsou quarkus.hibernate-orm.database.generation
a hibernate-orm.sql-load-script
drop-and-create
import.sql
v uvedeném pořadí, což znamená, že aplikace vždy zahodí a znovu vytvoří schéma databáze a načte data definovaná v import.sql. Import.sql soubor je pohodlné zařízení od Quarkus. Pokud soubor src/main/resources/import.sql existuje v souboru Jar Quarkus a hodnota hibernate-orm.sql-load-script
vlastnosti je import.sql
, příkazy JAZYKa SQL DML v tomto souboru se pro aplikaci spustí při spuštění.
Místní testování aplikace Quarkus s flexibilním serverem Azure Database for PostgreSQL
Před nasazením aplikace Quarkus do Azure Container Apps otestujte místní připojení k instanci flexibilního serveru Azure Database for PostgreSQL.
Nejprve pomocí následujících příkazů přidejte místní IP adresu do pravidel brány firewall instance flexibilního serveru Azure Database for PostgreSQL:
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
Dále nastavte následující proměnné prostředí v předchozím terminálu. Tyto proměnné prostředí slouží k připojení k instanci flexibilního serveru Azure Database for PostgreSQL z aplikace Quarkus spuštěné místně:
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}
Spusťte aplikaci Quarkus místně a otestujte připojení k instanci flexibilního serveru Azure Database for PostgreSQL. Pomocí následujícího příkazu spusťte aplikaci v produkčním režimu:
mvn clean package -DskipTests
java -jar target/quarkus-app/quarkus-run.jar
Otevřete nový webový prohlížeč pro přístup k http://localhost:8080
aplikaci Todo. Měla by se zobrazit stejná aplikace todo, jakou jste viděli, když jste aplikaci spustili místně ve vývojovém režimu bez položek todo.
Stisknutím klávesy Control+C aplikaci zastavte.
Sestavení image kontejneru a jeho nasdílení do služby Container Registry
Teď pomocí následujícího příkazu sestavte samotnou aplikaci. Tento příkaz používá rozšíření Jib k sestavení image kontejneru.
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
Výstup by měl končit .BUILD SUCCESS
Pomocí příkazového řádku nebo podman
příkazového docker
řádku můžete ověřit, jestli se image kontejneru vygeneruje, jak je znázorněno v následujícím příkladu:
docker images | grep ${TODO_QUARKUS_IMAGE_NAME}
Výstup vypadá podobně jako v následujícím příkladu:
<LOGIN_SERVER_VALUE>/todo-quarkus-aca 1.0 0804dfd834fd 2 minutes ago 407MB
Nasdílení imagí kontejneru do služby Container Registry pomocí následujícího příkazu:
docker push ${TODO_QUARKUS_IMAGE_TAG}
Výstup by měl vypadat zhruba jako v tomto příkladu:
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
Nasazení aplikace Quarkus do Azure Container Apps
Teď, když jste image aplikace odeslali do Služby Container Registry, pomocí následujícího příkazu vytvořte instanci Container Apps, která spustí aplikaci po načtení image ze služby Container Registry:
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
Úspěšný výstup je objekt JSON včetně vlastnosti "type": "Microsoft.App/containerApps"
.
Pak pomocí následujícího postupu připojte instanci flexibilního serveru Azure Database for PostgreSQL k aplikaci kontejneru pomocí konektoru služby:
Pomocí následujícího příkazu nainstalujte rozšíření bez hesla konektoru služby pro Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade --allow-preview true
Připojte databázi k aplikaci kontejneru pomocí spravované identity přiřazené systémem pomocí následujícího příkazu:
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
Úspěšný výstup je objekt JSON včetně vlastnosti
"type": "microsoft.servicelinker/linkers"
.
Pomocí následujícího příkazu získejte plně kvalifikovanou adresu URL pro přístup k aplikaci Todo:
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
Otevřete nový webový prohlížeč s hodnotou ${QUARKUS_URL}
. Pokud se webová stránka nevykresluje správně, chvíli počkejte a aktualizujte stránku.
Potom přidejte novou položku úkolu s textem Deployed the Todo app to Container Apps
. Tuto položku vyberte, pokud ji chcete označit jako dokončenou.
Přístup k rozhraní RESTful API (/api
) a získejte všechny položky úkolů uložené ve službě Azure Database for PostgreSQL, jak je znázorněno v následujícím příkladu:
curl --verbose -k ${QUARKUS_URL}/api | jq .
Výstup by měl vypadat jako v následujícím příkladu:
* 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
}
]
Ověřte, že databáze byla aktualizována.
Spuštěním následujícího příkazu ověřte, že databáze byla aktualizována novou položkou úkolů:
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;"
Pokud se zobrazí výzva k instalaci rozšíření, odpovězte na Y.
Výstup by měl vypadat podobně jako v následujícím příkladu a měl by obsahovat stejnou položku v grafickém uživatelském rozhraní aplikace Todo zobrazeném dříve:
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
}
]
Po dokončení odstraňte pravidlo brány firewall, které umožňuje místní IP adrese přistupovat k instanci flexibilního serveru Azure Database for PostgreSQL pomocí následujícího příkazu:
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
Vyčištění prostředků
Abyste se vyhnuli poplatkům za Azure, měli byste vyčistit nepotřebné prostředky. Pokud už cluster nepotřebujete, pomocí příkazu az group delete odeberte skupinu prostředků, službu kontejneru, registr kontejneru a všechny související prostředky.
git reset --hard
docker rmi ${TODO_QUARKUS_IMAGE_TAG}
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Můžete také použít docker rmi
k odstranění postgres
imagí testcontainers
kontejnerů vygenerovaných vývojovými režimy Quarkus.