Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 loginVérifiez que vous exécutez la dernière version d’Azure CLI :
az upgradeInstallez 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 --upgradeNote
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.
À l’invite de commandes de votre console, utilisez la commande git clone pour cloner le référentiel dupliqué dans le dossier python-container :
# Django git clone https://github.com/<github-username>/msdocs-python-django-azure-container-apps.git python-container # Flask # git clone https://github.com/<github-username>/msdocs-python-flask-azure-container-apps.git python-containerModifiez 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.
Si vous exécutez des commandes dans un interpréteur de commandes Git Bash sur un ordinateur Windows, entrez la commande suivante avant de continuer :
#!/bin/bash export MSYS_NO_PATHCONV=1Créez un groupe de ressources en utilisant la commande az group create:
#!/bin/bash RESOURCE_GROUP_NAME=<resource-group-name> LOCATION=<location> az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATIONCréez un registre de conteneurs à l’aide de la commande az acr create :
#!/bin/bash REGISTRY_NAME=<registry-name> #The name that you use for *\<registry-name>* must be unique within Azure, and it must contain 5 to 50 alphanumeric characters. az acr create \ --resource-group $RESOURCE_GROUP_NAME \ --name $REGISTRY_NAME \ --sku Basic \ --admin-enabled trueConnectez-vous au Registre à l’aide de la commande az acr login :
az acr login --name $REGISTRY_NAMELa 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 :
#!/bin/bash az acr build \ --registry $REGISTRY_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --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 clonepour 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
Note
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.
#!/bin/bash ADMIN_USERNAME=demoadmin ADMIN_PASSWORD=<admin-password> # Use a strong password that meets the requirements for PostgreSQL. POSTGRES_SERVER_NAME=<postgres-server-name> az postgres flexible-server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $POSTGRES_SERVER_NAME \ --location $LOCATION \ --admin-user $ADMIN_USERNAME \ --admin-password $ADMIN_PASSWORD \ --version 16 \ --tier Burstable \ --sku-name Standard_B1ms \ --public-access 0.0.0.0 \ --microsoft-entra-auth Enabled \ --storage-size 32 \ --backup-retention 7 \ --high-availability Disabled \ --yesUtilisez ces valeurs :
<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à9et 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
Nameissues 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,guestoupublic. Utilisezdemoadminpour 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.
Importante
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.
--version: utilisez16. Il spécifie la version de PostgreSQL à utiliser pour le serveur.--tier: utilisezBurstable. Il spécifie le niveau tarifaire du serveur. 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.--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.--microsoft-entra-auth: utilisezEnabled. Il active l’authentification Microsoft Entra sur le serveur.--storage-size: utilisez32. Il spécifie la taille de stockage en gigaoctets (Go) du serveur. Le minimum est de 32 Go.--backup-retention: utilisez7. Il spécifie le nombre de jours pendant lesquels conserver les sauvegardes pour le serveur. Le minimum est de 7 jours.--high-availability: utilisezDisabled. Elle désactive la haute disponibilité pour le serveur. La haute disponibilité n’est pas nécessaire pour ce didacticiel.--yes: il accepte les conditions d’utilisation pour le serveur PostgreSQL.
Note
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.
#!/bin/bash CALLER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv) CALLER_DISPLAY_NAME=$(az ad signed-in-user show --query userPrincipalName -o 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 :
#!/bin/bash az postgres flexible-server microsoft-entra-admin create \ --server-name "$POSTGRES_SERVER_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --display-name "$CALLER_DISPLAY_NAME" \ --object-id "$CALLER_OBJECT_ID" \ --type UserUtilisez la commande az postgres flexible-server firewall-rule create pour ajouter la règle qui permet à votre application web d’accéder au serveur flexible PostgreSQL. Dans la commande suivante, vous configurez le pare-feu du serveur pour accepter les connexions à partir de votre station de travail de développement à l’aide de votre adresse IP publique :
MY_IP=$(curl -s ifconfig.me) az postgres flexible-server firewall-rule create \ --name "$POSTGRES_SERVER_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --rule-name allow-my-ip \ --start-ip-address "$MY_IP" \ --end-ip-address "$MY_IP" ```
Note
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:
#!/bin/bash
DATABASE_NAME=restaurants_reviews
az postgres flexible-server db create \
--resource-group $RESOURCE_GROUP_NAME \
--server-name $POSTGRES_SERVER_NAME \
--database-name $DATABASE_NAME
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.
Note
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 :
UA_MANAGED_IDENTITY_NAME=<managed-identity-name> # Use a unique name for the managed identity, such as-"my-ua-managed-id".
az identity create \
--name $UA_MANAGED_IDENTITY_NAME
--resource-group $RESOURCE_GROUP_NAME
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.
#!/bin/bash MY_ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) echo $MY_ACCESS_TOKENAjoutez 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 :
#!/bin/bash az postgres flexible-server execute \ --name "$POSTGRES_SERVER_NAME" \ --admin-user "$CALLER_DISPLAY_NAME" \ --admin-password "$ACCESS_TOKEN" \ --database-name postgres \ --querytext "SELECT * FROM pgaadauth_create_principal('$UA_MANAGED_IDENTITY_NAME', false, false);"Note
Si vous exécutez la commande
az postgres flexible-server executesur 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 :
#!/bin/bash SQL_GRANTS=$(cat <<EOF GRANT CONNECT ON DATABASE $DATABASE_NAME TO "$UA_MANAGED_IDENTITY_NAME"; GRANT USAGE, CREATE ON SCHEMA public TO "$UA_MANAGED_IDENTITY_NAME"; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "$UA_MANAGED_IDENTITY_NAME"; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "$UA_MANAGED_IDENTITY_NAME"; EOF ) az postgres flexible-server execute \ --name "$POSTGRES_SERVER_NAME" \ --admin-user "$CALLER_DISPLAY_NAME" \ --admin-password "$MY_ACCESS_TOKEN" \ --database-name "$DATABASE_NAME" \ --querytext "$SQL_GRANTS"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 :
#!/bin/bash APP_ENV_NAME=<app-env-name> # Use a unique name for the environment, such as "python-container-env". az containerapp env create \ --name $APP_ENV_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATIONObtenez les informations d'identification de connexion pour l'instance Azure Container Registry en utilisant la commande az acr credential show.
#!/bin/bash REGISTRY_CREDS=$(az acr credential show -n "$REGISTRY_NAME" --query "[username,passwords[0].value]" -o tsv) REGISTRY_USERNAME=$(echo "$REGISTRY_CREDS" | head -n1) REGISTRY_PASSWORD=$(echo "$REGISTRY_CREDS" | tail -n1)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 :
UA_CLIENT_ID=$(az identity show \ --name "$UA_MANAGED_IDENTITY_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --query clientId -o tsv) UA_RESOURCE_ID=$(az identity show \ --name "$UA_MANAGED_IDENTITY_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --query id -o 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 :
AZURE_SECRET_KEY=$(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.
Note
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-centre guillemets doubles plutôt qu’entre guillemets simples. Vous devrez peut-être également appeler Python à l’aide depyou 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 "$CONTAINER_APP_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --environment "$APP_ENV_NAME" \ --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME" \ --target-port "$TARGET_PORT" \ --ingress external \ --registry-server "$REGISTRY_NAME.azurecr.io" \ --registry-username "$REGISTRY_USERNAME" \ --registry-password "$REGISTRY_PASSWORD" \ --user-assigned "$UA_RESOURCE_ID" \ --env-vars \ DBHOST="$POSTGRES_SERVER_NAME" \ DBNAME="$DATABASE_NAME" \ DBUSER="$UA_MANAGED_IDENTITY_NAME" \ RUNNING_IN_PRODUCTION=1 \ AZURE_CLIENT_ID="$UA_CLIENT_ID" \ AZURE_SECRET_KEY="$AZURE_SECRET_KEY"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 $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAMEEnsuite, à 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 createque 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
stderretstdoutdans la colonne Stream_s. La sortie Pythonprintcorrespond 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.