Tutoriel : Créer et déployer une application web Python avec Azure Container Apps et PostgreSQL
Cet article fait partie d’une série de tutoriels sur la façon de conteneuriser et de déployer une application web Python sur Azure Container Apps. Container Apps vous permet de déployer des applications conteneurisées sans avoir à gérer une infrastructure complexe.
Dans ce tutoriel, vous allez :
- Conteneuriser un exemple d’application web Python (Django ou Flask) en créant une image conteneur dans le cloud.
- Déployez l’image conteneur sur Azure Container Apps.
- Définissez des variables d’environnement qui permettent à l’application conteneur de se connecter à une instance Azure Database pour PostgreSQL - Serveur flexible, où l’exemple d’application stocke les données.
Le diagramme suivant met en évidence les tâches de ce didacticiel : création et déploiement d’une image conteneur.
Conditions préalables
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Vous pouvez exécuter des commandes Azure CLI dans Azure Cloud Shell ou sur une station de travail avec la Azure CLI installée.
Si vous exécutez localement, procédez comme suit pour vous connecter et installer les modules nécessaires pour ce didacticiel :
Connectez-vous à Azure et authentifiez-vous, si nécessaire :
az login
Vérifiez que vous exécutez la dernière version d’Azure CLI :
az upgrade
Installez ou mettez à niveau les extensions Azure CLI containerapp et rdbms-connect en utilisant la commande az extension add:
az extension add --name containerapp --upgrade az extension add --name rdbms-connect --upgrade
Remarque
Pour répertorier les extensions installées sur votre système, vous pouvez utiliser la commande az extension list. Par exemple:
az extension list --query [].name --output tsv
Obtenir l’exemple d’application
Scindez et clonez le code d'exemple dans votre environnement de développement :
Accédez au dépôt GitHub de l’exemple d’application (Django ou Flask), puis sélectionnez Dupliquer.
Suivez les étapes pour dupliquer le dépôt sur votre compte GitHub. Vous pouvez également télécharger le dépôt de code directement sur votre ordinateur local sans créer de fork ni compte GitHub. Toutefois, si vous utilisez la méthode de téléchargement, vous ne pourrez pas configurer l’intégration continue et la livraison continue (CI/CD) dans le tutoriel suivant de cette série.
Utilisez la commande git clone pour cloner le dépôt dupliqué dans le dossier python-container :
# Django git clone https://github.com/$USERNAME/msdocs-python-django-azure-container-apps.git python-container # Flask # git clone https://github.com/$USERNAME/msdocs-python-flask-azure-container-apps.git python-container
Modifiez le répertoire :
cd python-container
Créer une image conteneur à partir du code de l’application web
Après avoir suivi ces étapes, vous disposez d’une instance Azure Container Registry qui contient une image conteneur Docker générée à partir de l’exemple de code.
Créez un groupe de ressources en utilisant la commande az group create:
az group create \ --name pythoncontainer-rg \ --location <location>
Remplacez <emplacement> par l'une des valeurs pour l'emplacement Azure
Name
tirées de la sortie de la commandeaz account list-locations -o table
.Créez un registre de conteneurs à l’aide de la commande az acr create :
az acr create \ --resource-group pythoncontainer-rg \ --name <registry-name> \ --sku Basic \ --admin-enabled
Le nom que vous utilisez pour <nom de registre> doit être unique dans Azure, et il doit contenir 5 à 50 caractères alphanumériques.
Connectez-vous au Registre à l’aide de la commande az acr login :
az acr login --name <registry-name>
La commande ajoute «azurecr.io » au nom pour créer le nom complet du registre. Si la connexion réussit, le message « Connexion réussie » s’affiche. Si vous accédez au Registre à partir d’un abonnement différent de celui dans lequel vous avez créé le Registre, utilisez le commutateur
--suffix
.Si la connexion échoue, vérifiez que le démon Docker s’exécute sur votre système.
Générez l’image à l’aide de la commande az acr build :
az acr build \ --registry <registry-name> \ --resource-group pythoncontainer-rg \ --image pythoncontainer:latest .
Ces considérations s’appliquent :
Le point (
.
) à la fin de la commande indique l’emplacement du code source à générer. Si vous n’exécutez pas cette commande dans le répertoire racine de l’exemple d’application, spécifiez le chemin d’accès au code.Si vous exécutez la commande dans Azure Cloud Shell, utilisez
git clone
pour d’abord extraire le dépôt dans l’environnement Cloud Shell. Ensuite, naviguez jusqu’au répertoire racine du projet afin que le point (.
) soit interprété correctement.Si vous ne laissez pas l’option
-t
(identique à--image
), la commande met en file d’attente une build de contexte local sans l’envoyer au registre. La génération sans envoi peut s’avérer utile pour vérifier que l’image est générée.
Vérifiez que l’image conteneur a été créée à l’aide de la commande az acr repository list :
az acr repository list --name <registry-name>
Remarque
Les étapes de cette section créent un registre de conteneurs dans le niveau de service De base. Ce niveau est optimisé pour les coûts, avec un ensemble de fonctionnalités et un débit ciblés pour les scénarios de développement, et convient aux exigences de ce didacticiel. Dans les scénarios de production, vous utiliseriez probablement le niveau de service Standard ou Premium. Ces niveaux fournissent des niveaux de stockage et de débit améliorés.
Pour plus d’informations, consultez les niveaux de service de l'Azure Container Registry . Pour plus d’informations sur les tarifs, consultez Azure Container Registry pricing.
Créer une instance de serveur flexible PostgreSQL
L’exemple d’application (Django ou Flask) stocke les données des avis sur le restaurant dans une base de données PostgreSQL. En suivant ces étapes, vous créez le serveur qui contiendra la base de données.
Utilisez la commande az postgres flexible-server create pour créer un serveur PostgreSQM dans Azure. Il n’est pas rare que cette commande s’exécute pendant quelques minutes avant sa fin.
az postgres flexible-server create \ --resource-group pythoncontainer-rg \ --name <postgres-server-name> \ --location <location> \ --admin-user demoadmin \ --admin-password <admin-password> \ --active-directory-auth Enabled \ --tier burstable \ --sku-name standard_b1ms \ --public-access 0.0.0.0
Utilisez ces valeurs :
pythoncontainer-rg
: nom du groupe de ressources que ce didacticiel utilise. Si vous avez utilisé un autre nom, changez cette valeur.<postgres-server-name>: nom du serveur de base de données PostgreSQL. Ce nom doit être unique dans l’ensemble d’Azure. Le point de terminaison du serveur est
https://<postgres-server-name>.postgres.database.azure.com
. Les caractères autorisés sontA
àZ
,0
à9
et au trait d’union (-
).<emplacement>: utilisez le même emplacement que celui que vous avez utilisé pour l’application web. <location> est l’une des valeurs de localisation Azure
Name
issues de la sortie de la commandeaz account list-locations -o table
.<>admin-username : nom d’utilisateur du compte d’administrateur. Il ne peut pas être
azure_superuser
,admin
,administrator
,root
,guest
oupublic
. Utilisezdemoadmin
pour ce didacticiel.<mot de passe administrateur>: Le mot de passe de l’utilisateur administrateur. Il doit contenir entre 8 et 128 caractères de trois des catégories suivantes : Lettres majuscules, lettres minuscules, chiffres et caractères non alphanumériques.
Important
Lorsque vous créez des noms d’utilisateur ou des mots de passe, n’utilisez pas le caractère de signe dollar ($). Plus tard, lorsque vous créez des variables d’environnement avec ces valeurs, ce caractère a une signification particulière dans le conteneur Linux que vous utilisez pour exécuter des applications Python.
--active-directory-auth
: cette valeur spécifie si l’authentification Microsoft Entra est activée sur le serveur PostgreSQL. Réglez-le surEnabled
.--sku-name
: nom du niveau tarifaire et de la configuration de calcul ; par exemple,Standard_B1ms
. Pour plus d’informations, consultez Niveaux tarifaires d’Azure Database pour PostgreSQL. Pour répertorier les niveaux disponibles, utilisezaz postgres flexible-server list-skus --location <location>
.--public-access
: utilisez0.0.0.0
. Il autorise l’accès public au serveur à partir de n’importe quel service Azure, tel que Container Apps.
Remarque
Si vous envisagez d’utiliser le serveur PostgreSQL à partir de votre station de travail locale à l’aide d’outils, vous devez ajouter une règle de pare-feu pour l’adresse IP de votre station de travail à l’aide de l'az postgres flexible-server firewall-rule create command.
Utilisez la commande az ad signed-in-user show pour obtenir l’identifiant d’objet de votre compte utilisateur. Vous utilisez cet ID dans la commande suivante.
az ad signed-in-user show --query id --output tsv
Utilisez la commande az postgres flexible-server ad-admin create pour ajouter votre compte utilisateur en tant qu’administrateur Microsoft Entra sur le serveur PostgreSQL :
az postgres flexible-server ad-admin create \ --resource-group pythoncontainer-rg \ --server-name <postgres-server-name> \ --display-name <your-email-address> \ --object-id <your-account-object-id>
Pour votre ID d’objet de compte, utilisez la valeur que vous avez obtenue à l’étape précédente.
Remarque
Les étapes décrites dans cette section créent un serveur PostgreSQL avec un seul vCore et une mémoire limitée dans le niveau tarifaire Burstable. Le niveau Burstable est une option à moindre coût pour les charges de travail qui n’ont pas besoin de l’UC complète en continu et qui convient aux exigences de ce didacticiel. Pour les charges de travail de production, vous pouvez effectuer une mise à niveau vers le régime tarifaire General Purpose ou Memory Optimized. Ces niveaux offrent des performances plus élevées, mais augmentent les coûts.
Pour en savoir plus, consultez Options de capacité de calcul dans Azure Database for PostgreSQL : Flexible Server. Pour plus d'informations sur les tarifs, consultez la page des tarifs d'Azure Database pour PostgreSQL.
Créer une base de données sur le serveur
À ce stade, vous disposez d’un serveur PostgreSQL. Dans cette section, vous allez créer une base de donnée sur le serveur.
Utilisez la commande az postgres flexible-server db create pour créer une base de données nommée restaurants_reviews:
az postgres flexible-server db create \
--resource-group pythoncontainer-rg \
--server-name <postgres-server-name> \
--database-name restaurants_reviews
Utilisez ces valeurs :
pythoncontainer-rg
: nom du groupe de ressources que ce didacticiel utilise. Si vous avez utilisé un autre nom, changez cette valeur.<postgres-server-name>
: nom du serveur PostgreSQL.
Vous pouvez également utiliser la commande az postgres flexible-server connect pour vous connecter à la base de données, puis utiliser des commandes psql. Lorsque vous utilisez psql, il est souvent plus facile d’utiliser azure Cloud Shell, car l’interpréteur de commandes inclut toutes les dépendances pour vous.
Vous pouvez également vous connecter au serveur flexible Azure Database pour PostgreSQL et créer une base de données à l’aide de psql ou d’un IDE prenant en charge PostgreSQL, comme Azure Data Studio. Pour connaître les étapes d’utilisation de psql, consultez Configurer l’identité managée sur la base de données PostgreSQL plus loin dans cet article.
Créer une identité gérée attribuée par l'utilisateur
Créez une identité managée affectée par l’utilisateur à utiliser comme identité pour l’application conteneur lorsqu’elle est en cours d’exécution dans Azure.
Remarque
Pour créer une identité managée attribuée à l'utilisateur, votre compte a besoin de l'assignation de rôle Contributeur d’identité managée.
Utilisez la commande az identity create pour créer une identité managée affectée par l’utilisateur :
az identity create --name my-ua-managed-id --resource-group pythoncontainer-rg
Configurer l’identité managée sur la base de données PostgreSQL
Configurez l’identité managée en tant que rôle sur le serveur PostgreSQL, puis accordez-lui les autorisations nécessaires pour la base de données restaurants_reviews. Que vous utilisiez Azure CLI ou psql, vous devez vous connecter au serveur Azure PostgreSQL avec un utilisateur configuré en tant qu’administrateur Microsoft Entra sur votre instance de serveur. Seuls les comptes Microsoft Entra configurés en tant qu’administrateur PostgreSQL peuvent configurer des identités managées et d’autres rôles d’administrateur Microsoft sur votre serveur.
Obtenez un jeton d’accès pour votre compte Azure à l’aide de la commande az account get-access-token. Vous utilisez le jeton d’accès dans les étapes suivantes.
az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken
Le token renvoyé est long. Définissez sa valeur dans une variable d’environnement à utiliser dans les commandes à l’étape suivante :
MY_ACCESS_TOKEN=<your-access-token>
Ajoutez l’identité managée affectée par l’utilisateur en tant que rôle de base de données sur votre serveur PostgreSQL à l’aide de la commande az postgres flexible-server execute :
az postgres flexible-server execute \ --name <postgres-server-name> \ --database-name postgres \ --querytext "select * from pgaadauth_create_principal('"my-ua-managed-id"', false, false);select * from pgaadauth_list_principals(false);" \ --admin-user <your-Azure-account-email> \ --admin-password $MY_ACCESS_TOKEN
Utilisez ces valeurs :
Si vous avez utilisé un autre nom pour votre identité managée, remplacez
my-ua-managed-id
dans la commandepgaadauth_create_principal
par le nom de votre identité managée.Pour la valeur
--admin-user
, utilisez l’adresse e-mail de votre compte Azure.Pour la valeur
--admin-password
, utilisez le jeton d’accès à partir de la sortie de la commande précédente, sans guillemets.Vérifiez que le nom de la base de données est
postgres
.
Remarque
Si vous exécutez la commande
az postgres flexible-server execute
sur votre station de travail locale, veillez à ajouter une règle de pare-feu pour l’adresse IP de votre station de travail. Vous pouvez ajouter une règle en utilisant la commande az postgres flexible-server firewall-rule create. La même exigence existe également pour la commande à l’étape suivante.Accordez à l’identité managée assignée par l’utilisateur les autorisations nécessaires sur la base de données restaurants_reviews en utilisant la commande az postgres flexible-server execute suivante :
az postgres flexible-server execute \ --name <postgres-server-name> \ --database-name restaurants_reviews \ --querytext "GRANT CONNECT ON DATABASE restaurants_reviews TO \"my-ua-managed-id\";GRANT USAGE ON SCHEMA public TO \"my-ua-managed-id\";GRANT CREATE ON SCHEMA public TO \"my-ua-managed-id\";GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"my-ua-managed-id\";ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO \"my-ua-managed-id\";" \ --admin-user <your-Azure-account-email> \ --admin-password $MY_ACCESS_TOKEN
Utilisez ces valeurs :
Si vous avez utilisé un autre nom pour votre identité managée, remplacez toutes les instances de
my-ua-managed-id
dans la commande par le nom de votre identité managée. Il existe cinq instances dans la chaîne de requête.Pour la valeur
--admin-user
, utilisez l’adresse e-mail de votre compte Azure.Pour la valeur
--admin-password
, utilisez le jeton d’accès de la sortie précédente, sans guillemets.Vérifiez que le nom de la base de données est
restaurants_reviews
.
Cette commande Azure CLI se connecte à la base de données restaurants_reviews sur le serveur et émet les commandes SQL suivantes :
GRANT CONNECT ON DATABASE restaurants_reviews TO "my-ua-managed-id"; GRANT USAGE ON SCHEMA public TO "my-ua-managed-id"; GRANT CREATE ON SCHEMA public TO "my-ua-managed-id"; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "my-ua-managed-id"; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "my-ua-managed-id";
Déployer une application Web sur Container Apps
Les applications conteneur sont déployées dans des environnements azure Container Apps , qui agissent comme une limite sécurisée. Dans les étapes suivantes, vous créez l’environnement et un conteneur à l’intérieur de l’environnement. Vous configurez ensuite le conteneur afin que le site web soit visible en externe.
Ces étapes nécessitent l’extension Azure Container Apps, containerapp.
Créez un environnement Container Apps à l’aide de la commande az containerapp env create :
az containerapp env create \ --name python-container-env \ --resource-group pythoncontainer-rg \ --location <location>
<location> est l’une des valeurs de localisation Azure
Name
issues de la sortie de la commandeaz account list-locations -o table
.Obtenez les informations d'identification de connexion pour l'instance Azure Container Registry en utilisant la commande az acr credential show.
az acr credential show -n <registry-name>
Vous utilisez le nom d’utilisateur et l’un des mots de passe retournés à partir de la sortie de la commande lorsque vous créez l’application conteneur à l’étape 5.
Utilisez la commande az identity show pour obtenir l’ID client et l’ID de ressource de l’identité managée affectée par l’utilisateur :
az identity show --name my-ua-managed-id --resource-group pythoncontainer-rg --query "[clientId, id]" --output tsv
Vous utilisez la valeur de l’ID client (GUID) et de l’ID de ressource à partir de la sortie de la commande lorsque vous créez l’application conteneur à l’étape 5. L’ID de ressource a la forme suivante :
/subscriptions/<subscription-id>/resourcegroups/pythoncontainer-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-ua-managed-id
.Exécutez la commande suivante pour générer une valeur de clé secrète :
python -c 'import secrets; print(secrets.token_hex())'
Vous utilisez la valeur de clé secrète pour définir une variable d’environnement lorsque vous créez l’application conteneur à l’étape 5.
Remarque
La commande que montre cette étape est pour un terminal Bash. Selon votre environnement, vous devrez peut-être appeler Python à l’aide de
python3
. Sur Windows, vous devez placer la commande dans le paramètre-c
entre guillemets doubles plutôt qu’entre guillemets simples. Vous devrez peut-être également appeler Python à l’aide depy
ou depy -3
, en fonction de votre environnement.Créez une application conteneur dans l’environnement à l’aide de la commande az containerapp create :
az containerapp create \ --name python-container-app \ --resource-group pythoncontainer-rg \ --image <registry-name>.azurecr.io/pythoncontainer:latest \ --environment python-container-env \ --ingress external \ --target-port <5000 for Flask or 8000 for Django> \ --registry-server <registry-name>.azurecr.io \ --registry-username <registry-username> \ --registry-password <registry-password> \ --user-assigned <managed-identity-resource-id> \ --query properties.configuration.ingress.fqdn \ --env-vars DBHOST="<postgres-server-name>" \ DBNAME="restaurants_reviews" \ DBUSER="my-ua-managed-id" \ RUNNING_IN_PRODUCTION="1" \ AZURE_CLIENT_ID="<managed-identity-client-id>" \ AZURE_SECRET_KEY="<your-secret-key>"
Veillez à remplacer toutes les valeurs entre crochets par des valeurs que vous utilisez dans ce tutoriel. N’oubliez pas que le nom de votre application conteneur doit être unique dans Azure.
La valeur du paramètre
--env-vars
est une chaîne composée de valeurs séparées par des espaces dans le format key="value » avec les valeurs suivantes :DBHOST="\<postgres-server-name>"
DBNAME="restaurants_reviews"
DBUSER="my-ua-managed-id"
RUNNING_IN_PRODUCTION="1"
AZURE_CLIENT_ID="\<managed-identity-client-id>"
AZURE_SECRET_KEY="\<your-secret-key>"
La valeur de
DBUSER
est le nom de votre identité gérée attribuée par l'utilisateur.La valeur de
AZURE_CLIENT_ID
est l'identifiant client de votre identité managée assignée par l'utilisateur. Vous avez obtenu cette valeur à l’étape précédente.La valeur de
AZURE_SECRET_KEY
est la valeur de clé secrète que vous avez générée à l’étape précédente.Pour Django uniquement, migrez et créez un schéma de base de données. (Dans l’exemple d’application Flask, cela se fait automatiquement et vous pouvez ignorer cette étape.)
Connectez-vous à l’aide de la commande az containerapp exec :
az containerapp exec \ --name python-container-app \ --resource-group pythoncontainer-rg
Ensuite, à l’invite de commandes du shell, saisissez
python manage.py migrate
.Vous n’avez pas besoin de migrer pour les révisions du conteneur.
Tester le site web.
La commande
az containerapp create
que vous avez entrée précédemment génère une URL d’application que vous pouvez utiliser pour accéder à l’application. L’URL se termine parazurecontainerapps.io
. Accédez à l’URL dans un navigateur. Vous pouvez également utiliser la commande az containerapp browse .
Voici un exemple de site web d’exemple après l’ajout d’un restaurant et deux avis.
Résoudre les problèmes de déploiement
Vous avez oublié l’URL de l’application pour accéder au site web
Dans le portail Azure :
- Rendez-vous sur la page Overview de l’application container et recherchez Application Url.
Dans VS Code :
- Rendez-vous dans l’affichage Azure (Ctrl+Shift+A) et développez l’abonnement sur lequel vous travaillez.
- Développez le nœud Container Apps, développez l’environnement managé, faites un clic droit sur python-container-app, puis sélectionnez Browse. VS Code ouvre le navigateur avec l’URL de l’application.
Dans Azure CLI :
- Utilisez la commande
az containerapp show -g pythoncontainer-rg -n python-container-app --query properties.configuration.ingress.fqdn
.
Dans VS Code, la tâche de création d'image dans Azure retourne une erreur.
Si le message « Erreur : échec du téléchargement du contexte » s’affiche. Vérifiez si l'URL est incorrecte dans la fenêtre de sortie Output de VS Code, puis actualisez le registre dans l'extension Docker. Pour actualiser, sélectionnez l’extension Docker, accédez à la section Registres, recherchez le Registre, puis sélectionnez-le.
Si vous lancez à nouveau la tâche Build Image in Azure, vérifiez si votre référentiel issu d’une exécution précédente existe. Si c’est le cas, utilisez-le.
Dans le portail Azure, une erreur d’accès s’affiche lors de la création d’une application conteneur
Une erreur d’accès qui contient « Impossible d’accéder au nom<ACR>.azurecr.io » se produit lorsque les informations d’identification de l’administrateur sur une instance Azure Container Registry sont désactivées.
Pour vérifier l’état de l’administrateur dans le portail, accédez à votre instance Azure Container Registry, sélectionnez la ressource Clés d'accès, puis vérifiez que l'utilisateur administrateur est activé.
Votre image conteneur n’apparaît pas dans l’instance Azure Container Registry
- Vérifiez le résultat de la commande dans Azure CLI ou les résultats dans VS Code, et recherchez des messages pour confirmer le succès.
- Assurez-vous que le nom du registre a été spécifié correctement dans votre commande build avec Azure CLI ou dans les invites de tâche VS Code.
- Assurez-vous que vos informations d’identification n’ont pas expiré. Par exemple, dans VS Code, recherchez le registre cible dans l’extension Docker et actualisez. Dans Azure CLI, exécutez
az login
.
Le site web retourne « Demande incorrecte (400) »
Si vous recevez une erreur « Demande incorrecte (400) », vérifiez les variables d’environnement PostgreSQL transmises au conteneur. L’erreur 400 indique souvent que le code Python ne peut pas se connecter à l’instance PostgreSQL.
L’exemple de code utilisé dans ce didacticiel vérifie l’existence de la variable d’environnement de conteneur RUNNING_IN_PRODUCTION
, qui peut être définie sur n’importe quelle valeur (comme 1
).
Le site web retourne « Introuvable (404) »
- Vérifiez la valeur d’Application Url sur la page Overview du container. Si l’URL de l’application contient le mot « interne », l’entrée n’est pas définie correctement.
- Examinez l’entrée du conteneur. Par exemple, dans le portail Azure, accédez à la ressource d’entrée du conteneur. Assurez-vous que HTTP Ingress est activé et que Accepting traffic from anywhere est sélectionné.
Le site web ne démarre pas, vous obtenez un « stream timeout » ou rien n'est renvoyé.
- Vérifiez les journaux :
- Dans le portail Azure, accédez à la ressource de gestion des révisions de l’application conteneur et vérifiez Provision status pour le conteneur :
- Si le statut est Provisioning, attendez la fin de l’approvisionnement.
- Si le statut est Failed, sélectionnez la révision et consultez les journaux de la console. Choisissez l’ordre des colonnes pour afficher Heure générée (Time Generated), Flux_s (Stream_s) et Journal_s (Log_s). Triez les journaux par ordre décroissant et recherchez les messages Python
stderr
etstdout
dans la colonne Stream_s. La sortie Pythonprint
correspond aux messagesstdout
.
- Dans l’invite Azure CLI, utilisez la commande az containerapp logs show.
- Dans le portail Azure, accédez à la ressource de gestion des révisions de l’application conteneur et vérifiez Provision status pour le conteneur :
- Si vous utilisez l’infrastructure Django, vérifiez si les tables restaurants_reviews existent dans la base de données. Dans le cas contraire, utilisez une console pour accéder au conteneur et exécuter
python manage.py migrate
.