Déployer une application Java avec Container Apps sur Azure Container Apps
Cet article vous montre comment déployer rapidement Red Hat Quarkus sur Microsoft Azure Container Apps avec une simple application CRUD. L’application est une « liste de tâches » avec un front-end JavaScript et un point de terminaison REST. Azure Database pour PostgreSQL – Serveur flexible fournit la couche de persistance pour l’application. L’article vous montre comment tester votre application localement et la déployer sur Container Apps.
Prérequis
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Préparez une machine locale avec un système d’exploitation de type UNIX installé (par exemple Ubuntu, macOS ou Sous-système Windows pour Linux).
- Installez une implémentation de Java SE version 17 ou ultérieure, par exemple la build Microsoft d’OpenJDK.
- Installez Maven version 3.9.8 ou ultérieure.
- Installez Docker ou Podman pour votre système d’exploitation.
- Installez jq.
- Installez cURL.
- Installez l’interface CLI de Quarkus version 3.12.1 ou ultérieure.
- Installez Azure CLI pour exécuter des commandes Azure CLI.
- Connectez-vous à l’interface Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître d’autres options de connexion, consultez Se connecter à Azure avec Azure CLI.
- Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser et gérer des extensions avec Azure CLI.
- Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade. Cet article nécessite au moins la version 2.61.0 d’Azure CLI.
Création du projet d’application
Utilisez la commande suivante pour cloner l’exemple de projet Java pour cet article. L’exemple se trouve sur GitHub.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2024-10-14
cd aca-quarkus
Si un message vous signale que vous allez passer à l’état detached HEAD, vous pouvez ignorer ce message sans risque. Étant donné que cet article ne nécessite aucune validation, l’état détaché HEAD est approprié.
Tester votre application Quarkus localement
Les étapes de cette section vous montrent comment exécuter l’application localement.
Quarkus prend en charge l’approvisionnement automatique de services non configurés en mode développement et test. Quarkus fait référence à cette fonctionnalité en tant que services de développement. Supposons que vous incluiez une fonctionnalité Quarkus, telle que la connexion à un service de base de données. Vous souhaitez tester l’application, mais vous n’avez pas encore entièrement configuré la connexion à une base de données réelle. Quarkus démarre automatiquement une version stub du service approprié et y connecte votre application. Pour plus d’informations, consultez Vue d’ensemble de Dev Services dans la documentation de Quarkus.
Vérifiez que votre environnement de conteneur, Docker ou Podman, est en cours d’exécution et utilisez la commande suivante pour passer en mode de développement Quarkus :
quarkus dev
Au lieu de quarkus dev
, vous pouvez effectuer la même chose avec Maven à l’aide de mvn quarkus:dev
.
Il est possible qu’on vous demande si vous souhaitez envoyer la télémétrie de votre utilisation du mode développeur de Quarkus. Si c’est le cas, répondez comme vous le souhaitez.
Le mode de développement Quarkus permet le rechargement en direct avec la compilation en arrière-plan. Si vous modifiez un aspect du code source de votre application et actualisez votre navigateur, vous pouvez voir les modifications. En cas de problèmes de compilation ou de déploiement, une page d’erreur vous en informera. Le mode de développement Quarkus écoute un débogueur sur le port 5005. Si vous souhaitez attendre que le débogueur s’attache avant de l’exécuter, entrez -Dsuspend
dans la ligne de commande. Si vous ne souhaitez pas du tout le débogueur, vous pouvez utiliser -Ddebug=false
.
La sortie doit ressembler à cet exemple :
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
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>
Appuyez sur w sur le terminal où le mode de développement Quarkus est en cours d’exécution. La touche w ouvre votre navigateur web par défaut pour afficher l’application Todo
. Vous pouvez également accéder directement à l’interface graphique utilisateur de l’application via http://localhost:8080
.
Essayez de sélectionner quelques éléments todo dans la liste des tâches. L’interface utilisateur indique la sélection avec un style de texte barré. Vous pouvez également ajouter un nouvel élément todo à la liste de tâches en tapant Vérifier les applications todo et en appuyant sur Entrée, comme illustré dans la capture d’écran suivante :
Accédez à l’API RESTful (/api
) pour obtenir tous les éléments todo qui stockent dans la base de données PostgreSQL locale :
curl --verbose http://localhost:8080/api | jq .
La sortie doit ressembler à cet exemple :
* 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/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://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
}
]
Appuyez sur q pour quitter le mode dev Quarkus.
Créer les ressources Azure pour exécuter l’application Quarkus
Les étapes de cette section vous montrent comment créer les ressources Azure suivantes pour exécuter l’exemple d’application Quarkus :
- Azure Database pour PostgreSQL – Serveur flexible
- Azure Container Registry
- Azure Container Apps
Certaines de ces ressources doivent avoir des noms uniques dans l’étendue de l’abonnement Azure. Pour garantir cette unicité, vous pouvez utiliser les modèles initiales, séquence, date et suffixe. Pour appliquer ce modèle, nommez vos ressources en répertoriant vos initiales, un numéro de séquence, la date du jour et un certain type de suffixe spécifique à la ressource, par exemple, rg
pour « groupe de ressources ». Les variables d’environnement suivantes utilisent ce modèle. Remplacez les valeurs d’espace réservé dans UNIQUE_VALUE
et LOCATION
par vos propres valeurs et exécutez les commandes dans votre terminal.
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
Ensuite, créez un groupe de ressources à l’aide de la commande suivante :
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION
Créer un serveur flexible Azure Database pour PostgreSQL
Un serveur flexible Azure Database pour PostgreSQL est un service de base de données entièrement géré conçu pour offrir un contrôle et une flexibilité plus granulaires des fonctions de gestion de base de données et des paramètres de configuration. Cette section vous montre comment créer une instance Azure Database pour PostgreSQL – Serveur flexible en utilisant Azure CLI. Pour plus d’informations, consultez Démarrage rapide : Créer une instance Azure Database pour PostgreSQL – Serveur flexible en utilisant Azure CLI.
Créez une instance de serveur flexible Azure Database pour PostgreSQL à l’aide de la commande suivante :
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
La création du serveur, de la base de données, de l’utilisateur administrateur et des règles de pare-feu prend quelques minutes. Si la commande réussit, la sortie ressemble à l’exemple suivant :
{
"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"
}
Ajoutez l’utilisateur connecté actuel en tant qu’administrateur Microsoft Entra à l’instance de serveur flexible Azure Database pour PostgreSQL à l’aide des commandes suivantes :
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)
Une sortie réussie est un objet JSON incluant la propriété "type": "Microsoft.DBforPostgreSQL/flexibleServers/administrators"
.
Créer une instance Azure Container Registry Microsoft
Étant donné que Quarkus est une technologie native du cloud, il intègre un support pour la création de conteneurs qui s’exécutent dans Container Apps. Container Apps dépend entièrement d’un registre de conteneurs à partir duquel il trouve les images de conteneurs à exécuter. Container Apps prend en charge Azure Container Registry.
Utilisez la commande az acr create pour créer l’instance de Container Registry. L’exemple suivant crée une instance de Container Registry nommée avec la valeur de votre variable d’environnement ${REGISTRY_NAME}
:
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--location ${LOCATION} \
--name $REGISTRY_NAME \
--sku Basic
Après un bref laps de temps, vous devriez voir la sortie JSON qui contient les lignes suivantes :
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "<YOUR_RESOURCE_GROUP>",
Obtenez le serveur de connexion pour l’instance Container Registry à l’aide de la commande suivante :
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
echo $LOGIN_SERVER
Connectez votre docker à l’instance de Container Registry
Connectez-vous à l’instance de Container Registry. La connexion vous permet d’envoyer (push) une image. Utilisez la commande suivante pour vous connecter au Registre :
az acr login --name $REGISTRY_NAME
Si vous utilisez Podman au lieu de Docker, apportez les modifications nécessaires à la commande.
Si vous vous êtes connecté avec succès à l’instance de Container Registry, vous devriez voir Login Succeeded
à la fin de la sortie de la commande.
Créer un environnement
Un environnement dans Azure Container Apps crée une limite sécurisée autour d’un groupe d’applications de conteneur. Les applications de conteneur déployées dans le même environnement sont déployées dans le même réseau virtuel et écrivent les journaux dans le même espace de travail Log Analytics. Utilisez la commande az containerapp env create pour créer un environnement, comme montré dans l’exemple suivant :
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Si on vous demande d’installer une extension, répondez Y.
Personnaliser la configuration native cloud
En tant que technologie native du cloud, Quarkus offre la possibilité de générer automatiquement des images de conteneur. Pour plus d’informations, consultez Images de conteneurs. Les développeurs peuvent ensuite déployer l’image de l’application sur une plateforme conteneurisée cible - par exemple, Azure Container Apps.
Pour générer l’image du conteneur, utilisez la commande suivante pour ajouter l’extension container-image-jib
dans votre terminal local :
quarkus ext add container-image-jib
Quarkus modifie le POM pour s’assurer que l’extension est incluse parmi les <dependencies>
. Si on vous demande d’installer quelque chose appelé JBang
, répondez oui et permettez son installation.
La sortie doit ressembler à cet exemple :
[SUCCESS] ✅ Extension io.quarkus:quarkus-container-image-jib has been installed
Ouvrez le fichier pom.xml et les dépendances suivantes doivent être ajoutées par l’extension container-image-jib
:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-container-image-jib</artifactId>
</dependency>
Ensuite, ajoutez les dépendances suivantes au fichier pom.xml pour prendre en charge l’authentification sans mot de passe avec Azure Database pour PostgreSQL serveur flexible :
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.1.20</version>
</dependency>
En tant que technologie native cloud, Quarkus prend en charge la notion de profils de configuration. Quarkus dispose des trois profils intégrés suivants :
dev
- Activé en mode développement.test
- Activé lors de l’exécution de tests.prod
- Le profil par défaut lorsque vous n’êtes pas en mode développement ou test.
Quarkus prend en charge n’importe quel nombre de profils nommés, selon les besoins.
Les étapes restantes de cette section vous dirigent vers la suppression des marques de commentaire et la personnalisation des valeurs dans le fichier src/main/resources/application.properties. Assurez-vous que toutes les lignes commençant par # %prod.
ne sont pas commentées en supprimant le premier #
.
Le préfixe %prod.
indique que ces propriétés sont actives lors de l’exécution dans le profil prod
. Pour plus d’informations sur les profils de configuration, consultez la documentation de Quarkus.
Examinez la configuration de la base de données
Après avoir décompressé les propriétés, la configuration de la base de données dans le fichier src/main/resources/application.properties doit ressembler à l’exemple suivant :
# 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
Supprimez la propriété%prod.quarkus.datasource.password
, car elle n’est pas requise lors de l’utilisation de l’authentification sans mot de passe avec Azure Database pour PostgreSQL serveur flexible. Mettez à jour les autres propriétés associées %prod.quarkus.datasource.jdbc.url
à la connexion de base de données et %prod.quarkus.datasource.username
avec les valeurs, comme indiqué dans l’exemple suivant. La configuration finale doit ressembler à l’exemple suivant :
# 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
La valeur , ${AZURE_POSTGRESQL_PORT}
, ${AZURE_POSTGRESQL_DATABASE}
et ${AZURE_POSTGRESQL_USERNAME}
sont fournies par l’environnement Azure Container Apps lors de l’exécution à l’aide de ${AZURE_POSTGRESQL_HOST}
l’extension sans mot de passe service Connector plus loin dans cet article.
En général, vous ne vous attendez pas à ce que les données persistées dans la base de données soient supprimées et remplies de nouveau avec les données d’exemple dans un environnement de production. C’est pourquoi vous pouvez voir que le schéma pour quarkus.hibernate-orm.database.generation
est spécifié comme create
afin que l’application ne crée le schéma que lorsqu’il n’existe pas au démarrage initial. De plus, la base de données n’est pas pré-remplie avec des données d’exemple car hibernate-orm.sql-load-script
est spécifié comme no-file
. Cette configuration est différente de celle que vous avez utilisée lorsque vous avez exécuté l’application localement en mode développement précédemment. Les valeurs par défaut en mode développement pour quarkus.hibernate-orm.database.generation
et hibernate-orm.sql-load-script
sont drop-and-create
et import.sql
respectivement, ce qui signifie que l’application supprime et recrée toujours le schéma de la base de données et charge les données définies dans import.sql. Le fichier import.sql est une fonctionnalité pratique de Quarkus. Si le fichier src/main/resources/import.sql existe dans le jar de Quarkus, et que la valeur de la propriété hibernate-orm.sql-load-script
est import.sql
, les instructions SQL DML dans ce fichier sont exécutées au démarrage de l’application.
Tester votre application Quarkus localement avec Azure Database pour PostgreSQL serveur flexible
Avant de déployer l’application Dockerus sur Azure Container Apps, testez la connexion à l’instance de serveur flexible Azure Database pour PostgreSQL localement.
Tout d’abord, ajoutez l’adresse IP locale aux règles de pare-feu d’instance de serveur flexible Azure Database pour PostgreSQL à l’aide des commandes suivantes :
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
Ensuite, définissez les variables d’environnement suivantes dans votre terminal précédent. Ces variables d’environnement sont utilisées pour se connecter à l’instance de serveur flexible Azure Database pour PostgreSQL à partir de l’application Topologieus s’exécutant localement :
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}
Exécutez l’application Quarkus localement pour tester la connexion à l’instance de serveur flexible Azure Database pour PostgreSQL. Utilisez la commande suivante pour démarrer l’application en mode de production :
mvn clean package -DskipTests
java -jar target/quarkus-app/quarkus-run.jar
Ouvrez un nouveau navigateur web pour accéder à http://localhost:8080
l’application Todo. Vous devez voir la même application Todo que celle que vous avez vue lorsque vous avez exécuté l’application localement en mode de développement, sans aucun élément Todo.
Appuyez sur Ctrl+C pour arrêter l’application.
Construisez l’image du conteneur et poussez-la vers Container Registry
Maintenant, exécutez la commande suivante pour générer l’application elle-même. Cette commande utilise l’extension Jib pour construire l’image du conteneur.
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
La sortie doit se terminer par BUILD SUCCESS
.
Vous pouvez vérifier si l’image conteneur est également générée à l’aide de la docker
podman
ligne de commande (CLI), comme illustré dans l’exemple suivant :
docker images | grep ${TODO_QUARKUS_IMAGE_NAME}
La sortie doit ressembler à celle-ci :
<LOGIN_SERVER_VALUE>/todo-quarkus-aca 1.0 0804dfd834fd 2 minutes ago 407MB
Poussez les images de conteneur vers Container Registry en utilisant la commande suivante :
docker push ${TODO_QUARKUS_IMAGE_TAG}
La sortie doit être semblable à l’exemple suivant :
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
Déployer l’application Dockerus sur Azure Container Apps
Maintenant que vous avez envoyé l’image de l’application à Container Registry, utilisez la commande suivante pour créer une instance Container Apps pour exécuter l’application après avoir extrait l’image à partir du Registre de conteneurs :
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
Une sortie réussie est un objet JSON incluant la propriété "type": "Microsoft.App/containerApps"
.
Ensuite, connectez l’instance de serveur flexible Azure Database pour PostgreSQL à l’application conteneur à l’aide de Service Connector en procédant comme suit :
Installez l’extension sans mot de passe service Connector pour Azure CLI à l’aide de la commande suivante :
az extension add --name serviceconnector-passwordless --upgrade --allow-preview true
Connectez la base de données à l’application conteneur avec une identité managée affectée par le système à l’aide de la commande suivante :
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
Une sortie réussie est un objet JSON incluant la propriété
"type": "microsoft.servicelinker/linkers"
.
Obtenez une URL entièrement qualifiée pour accéder à l’application Todo en utilisant la commande suivante :
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
Ouvrez un nouveau navigateur web à la valeur de ${QUARKUS_URL}
. Si la page web ne s’affiche pas correctement, attendez un certain temps et actualisez la page.
Ensuite, ajoutez un nouvel élément todo avec le texte Deployed the Todo app to Container Apps
. Sélectionnez cet élément pour le marquer comme terminé.
Accédez à l’API RESTful (/api
) pour obtenir tous les éléments à faire stockés dans Azure Database for PostgreSQL, comme illustré dans l’exemple suivant :
curl --verbose -k ${QUARKUS_URL}/api | jq .
La sortie doit ressembler à cet exemple :
* 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
}
]
Vérifier que la base de données a été mise à jour
Exécutez la commande suivante pour vérifier que la base de données a été mise à jour avec le nouvel élément todo :
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;"
Si on vous demande d’installer une extension, répondez Y.
La sortie doit ressembler à l’exemple suivant et doit inclure le même élément dans l’interface utilisateur utilisateur de l’application Todo illustrée précédemment :
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
}
]
Lorsque vous avez terminé, supprimez la règle de pare-feu qui permet à votre adresse IP locale d’accéder à l’instance de serveur flexible Azure Database pour PostgreSQL à l’aide de la commande suivante :
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
Nettoyer les ressources
Pour éviter des frais Azure, vous devez nettoyer les ressources inutiles. Lorsque vous n’avez plus besoin du cluster, utilisez la commande az group delete pour supprimer le groupe de ressources, le service conteneur, le registre de conteneurs et toutes les ressources associées.
git reset --hard
docker rmi ${TODO_QUARKUS_IMAGE_TAG}
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Vous voudrez peut-être aussi utiliser docker rmi
pour supprimer les postgres
et testcontainers
images de conteneur générées par le mode développeur de Quarkus.