Een Python-web-app bouwen en implementeren met Azure Container Apps en PostgreSQL
Dit artikel maakt deel uit van een zelfstudie over het in een container zetten en implementeren van een Python-web-app in Azure Container Apps. Met Container Apps kunt u container-apps implementeren zonder dat u complexe infrastructuur hoeft te beheren.
In dit deel van de zelfstudie leert u hoe u een Python-voorbeeldweb-app (Django of Flask) in een container kunt zetten en implementeren. U bouwt met name de containerinstallatiekopieën in de cloud en implementeert deze in Azure Container Apps. U definieert omgevingsvariabelen waarmee de container-app verbinding kan maken met een Exemplaar van Azure Database for PostgreSQL - Flexible Server , waarin de voorbeeld-app gegevens opslaat.
In dit servicediagram worden de onderdelen beschreven in dit artikel: een containerinstallatiekopieën bouwen en implementeren.
Voorwaarden
Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Azure CLI-opdrachten kunnen worden uitgevoerd in Azure Cloud Shell of op een werkstation waarop de Azure CLI is geïnstalleerd.
Als u lokaal werkt, volgt u deze stappen om u aan te melden en de benodigde modules voor deze zelfstudie te installeren.
Meld u aan bij Azure en verifieer, indien nodig:
az login
Zorg ervoor dat u de nieuwste versie van de Azure CLI uitvoert:
az upgrade
Installeer of upgrade de containerapp en rdbms-connect Azure CLI-extensies met de opdracht az extension add.
az extension add --name containerapp --upgrade az extension add --name rdbms-connect --upgrade
Notitie
Als u de extensies wilt weergeven die op uw systeem zijn geïnstalleerd, kunt u de opdracht az extension list gebruiken. Bijvoorbeeld
az extension list --query [].name --output tsv
De voorbeeld-app downloaden
Fork en kloon de voorbeeldcode naar uw ontwikkelomgeving.
Ga naar de GitHub-opslagplaats van de voorbeeld-app (Django of Flask) en selecteer Fork.
Volg de stappen om de map te forkeren naar uw GitHub-account. U kunt de codeopslagplaats ook rechtstreeks naar uw lokale computer downloaden zonder te forken of een GitHub-account, maar u kunt CI/CD die verderop in de zelfstudie wordt besproken, niet instellen.
Gebruik de git-kloonopdracht om de geforkte opslagplaats te klonen in de map 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
Map wijzigen.
cd python-container
Een containerinstallatiekopieën bouwen vanuit web-app-code
Nadat u deze stappen hebt uitgevoerd, hebt u een Azure Container Registry met een Docker-containerinstallatiekopie die is gebouwd op basis van de voorbeeldcode.
Een resourcegroep maken met de opdracht az group create.
az group create \ --name pythoncontainer-rg \ --location <location>
<locatie> is een van de Azure-locatienaamwaarden uit de uitvoer van de opdracht
az account list-locations -o table
.Maak een containerregister met de opdracht az acr create .
az acr create \ --resource-group pythoncontainer-rg \ --name <registry-name> \ --sku Basic \ --admin-enabled
<registernaam> moet uniek zijn binnen Azure en mag 5-50 alfanumerieke tekens bevatten.
Meld u aan bij het register met behulp van de opdracht az acr login .
az acr login --name <registry-name>
Met de opdracht wordt 'azurecr.io' toegevoegd aan de naam om de volledig gekwalificeerde registernaam te maken. Als dit lukt, ziet u het bericht 'Aanmelden voltooid'. Als u het register opent vanuit een ander abonnement dan het abonnement waarin het register is gemaakt, gebruikt u de
--suffix
schakeloptie.Als het aanmelden mislukt, controleert u of de Docker-daemon wordt uitgevoerd op uw systeem.
Bouw de installatiekopieën met de opdracht az acr build .
az acr build \ --registry <registry-name> \ --resource-group pythoncontainer-rg \ --image pythoncontainer:latest .
Opmerking:
De punt (".") aan het einde van de opdracht geeft de locatie aan van de broncode die moet worden gebouwd. Als u deze opdracht niet uitvoert in de hoofdmap van de voorbeeld-app, geeft u het pad naar de code op.
Als u de opdracht uitvoert in Azure Cloud Shell, gebruikt u
git clone
om eerst de opslagplaats naar de Cloud Shell-omgeving te halen en de map te wijzigen in de hoofdmap van het project, zodat punt ('.') correct wordt geïnterpreteerd.Als u de
-t
optie (hetzelfde als--image
) weglaat, wordt met de opdracht een lokale contextbuild in de wachtrij geplaatst zonder deze naar het register te pushen. Bouwen zonder pushen kan handig zijn om te controleren of de installatiekopieën worden gebouwd.
Controleer of de containerinstallatiekopieën zijn gemaakt met de opdracht az acr repository list .
az acr repository list --name <registry-name>
Notitie
Met de stappen in deze sectie maakt u een containerregister in de Basic-servicelaag. Deze laag is kosten-geoptimaliseerd, met een set van functies en doorvoer specifiek gericht op ontwikkelaarscenario's, en is geschikt voor de eisen van deze tutorial. In productiescenario's zou u waarschijnlijk de Standard- of Premium-servicelaag gebruiken. Deze lagen bieden verbeterde opslag- en doorvoerniveaus. Zie Azure Container Registry-servicelagenvoor meer informatie. Voor informatie over prijzen, zie prijzen van Azure Container Registry.
Een PostgreSQL Flexible Server-exemplaar maken
In de voorbeeld-app (Django of Flask) worden restaurantbeoordelingsgegevens opgeslagen in een PostgreSQL-database. In deze stappen maakt u de server die de database bevat.
Gebruik de opdracht az postgres flexible-server create om de PostgreSQL-server in Azure te maken. Het is niet ongebruikelijk dat deze opdracht enkele minuten wordt uitgevoerd.
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
'pythoncontainer-rg': de naam van de resourcegroep die in deze zelfstudie wordt gebruikt. Als u een andere naam hebt gebruikt, wijzigt u deze waarde.
<postgres-servernaam>: de naam van de PostgreSQL-databaseserver. Deze naam moet uniek zijn in azure. Het servereindpunt is 'https://< postgres-server-name.postgres.database.azure.com>'. Toegestane tekens zijn 'A'-'Z', '0'-'9' en '-'.
<locatie>: gebruik dezelfde locatie die wordt gebruikt voor de web-app. <locatie> is een van de Azure-locatienaamwaarden uit de uitvoer van de opdracht
az account list-locations -o table
.<admin-username>: gebruikersnaam voor het beheerdersaccount. Het kan niet 'azure_superuser', 'admin', 'administrator', 'root', 'guest' of 'public' zijn. Gebruik demoadmin voor deze zelfstudie.
<beheerderswachtwoord>: wachtwoord van de gebruiker met beheerdersrechten. Het moet 8 tot 128 tekens bevatten uit drie van de volgende categorieën: Engelse hoofdletters, Nederlandse kleine letters, cijfers en niet-alfanumerieke tekens.
Belangrijk
Bij het maken van gebruikersnamen of wachtwoorden wordt het teken $niet gebruikt. Later maakt u omgevingsvariabelen met deze waarden waarbij het teken $een speciale betekenis heeft binnen de Linux-container die wordt gebruikt om Python-apps uit te voeren.
--active-directory-auth: Hiermee geeft u op of Microsoft Entra ID-verificatie is ingeschakeld op de PostreSQL-server. Ingesteld op
Enabled
.--sku-name: de naam van de prijscategorie en rekenconfiguratie, bijvoorbeeld 'Standard_B1ms'. Zie Prijzen voor Azure Database for PostgreSQL voor meer informatie. Als u beschikbare SKU's wilt weergeven, gebruikt u
az postgres flexible-server list-skus --location <location>
.--public-access: gebruik 0.0.0.0, waarmee openbare toegang tot de server mogelijk is vanuit elke Azure-service, zoals Container Apps.
Notitie
Als u van plan bent om met de PostgreSQL-server te werken vanaf uw lokale werkstation met software, moet u een firewallregel toevoegen voor het IP-adres van uw werkstation met de opdracht az postgres flexible-server firewall-rule create.
Gebruik de opdracht az ad signed-in-user show om de object-id van uw gebruikersaccount te verkrijgen om te gebruiken in de volgende opdracht.
az ad signed-in-user show --query id --output tsv
Gebruik de az postgres flexible-server ad-admin create opdracht om uw gebruikersaccount toe te voegen als Microsoft Entra-beheerder op de PostgreSQL-server.
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>
Gebruik voor uw accountobject-id de waarde die u in de vorige stap hebt gekregen.
Notitie
Met de stappen in deze sectie maakt u een PostgreSQL-server met één vCore en beperkt geheugen in de prijscategorie Burstable. De Burstable-laag is een lagere kostenoptie voor workloads die niet continu de volledige CPU nodig hebben en geschikt is voor de vereisten van deze zelfstudie. Voor productieworkloads kunt u upgraden naar de prijscategorie Algemeen gebruik of Geoptimaliseerd voor geheugen. Deze lagen bieden hogere prestaties, maar verhogen de kosten. Zie Compute-opties in Azure Database for PostgreSQL - Flexible Servervoor meer informatie. Zie Azure Database for PostgreSQL-prijzenvoor meer informatie over de kosten.
Een database maken op de server
Op dit moment hebt u een PostgreSQL-server. In deze sectie maakt u een database op de server.
Gebruik de opdracht az postgres flexible-server db create om een database met de naam restaurants_reviewste maken.
az postgres flexible-server db create \
--resource-group pythoncontainer-rg \
--server-name <postgres-server-name> \
--database-name restaurants_reviews
Hierin:
- 'pythoncontainer-rg': de naam van de resourcegroep die in deze zelfstudie wordt gebruikt. Als u een andere naam hebt gebruikt, wijzigt u deze waarde.
-
<postgres-server-name>
: de naam van de PostgreSQL-server.
U kunt ook de opdracht az postgres flexible-server connect gebruiken om verbinding te maken met de database en vervolgens met psql-opdrachten te werken. Wanneer u met psql werkt, is het vaak eenvoudiger om Azure Cloud Shell te gebruiken, omdat alle afhankelijkheden voor u zijn opgenomen in de shell.
U kunt ook verbinding maken met azure PostgreSQL Flexible Server en een database maken met behulp van psql- of een IDE die PostgreSQL ondersteunt, zoals Azure Data Studio. Zie De beheerde identiteit configureren op de postgresql-databasevoor stappen die psql gebruiken.
Een door de gebruiker toegewezen beheerde identiteit maken
Maak een door de gebruiker toegewezen beheerde identiteit. Deze beheerde identiteit wordt gebruikt als de identiteit voor de container-app wanneer deze wordt uitgevoerd in Azure.
Notitie
Als u een door de gebruiker toegewezen beheerde identiteit wilt maken, moet uw account de roltoewijzing van Bijdrager voor beheerde identiteit hebben.
Gebruik de opdracht az identity create om een door de gebruiker toegewezen beheerde identiteit te maken.
az identity create --name my-ua-managed-id --resource-group pythoncontainer-rg
De beheerde identiteit configureren in de PostgreSQL-database
Configureer de beheerde identiteit als een rol op de PostgreSQL-server en verdeel deze vervolgens de benodigde machtigingen voor de restaurants_reviews-database. Ongeacht of u de Azure CLI of psql gebruikt, moet u verbinding maken met de Azure PostgreSQL-server met een gebruiker die is geconfigureerd als Microsoft Entra-beheerder op uw serverexemplaren. Alleen Microsoft Entra-accounts die zijn geconfigureerd als PostreSQL-beheerder kunnen beheerde identiteiten en andere Microsoft-beheerdersrollen op uw server configureren.
Haal een toegangstoken op voor uw Azure-account met de opdracht az account get-access-token. U gebruikt het toegangstoken in de volgende stappen.
az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken
Het geretourneerde token is lang. Stel de waarde in een omgevingsvariabele in voor gebruik in de opdrachten in de volgende stap:
MY_ACCESS_TOKEN=<your-access-token>
Voeg de door de gebruiker toegewezen beheerde identiteit toe als databaserol op uw PostgreSQL-server met de az postgres flexible-server execute command.
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
Als u een andere naam voor uw beheerde identiteit hebt gebruikt, vervangt u
my-ua-managed-id
in de opdrachtpgaadauth_create_principal
door de naam van uw beheerde identiteit.Gebruik het e-mailadres van uw Azure-account voor de
--admin-user
-waarde.Gebruik voor de
--admin-password
-waarde het toegangstoken dat door de vorige opdracht is gegenereerd, zonder aanhalingstekens.Zorg ervoor dat de databasenaam is
postgres
.
Notitie
Als u het commando az postgres flexible-server op uw lokale werkstation uitvoert, zorg er dan voor dat u een firewallregel hebt toegevoegd voor het IP-adres van uw werkstation. U kunt een regel toevoegen met de opdracht az postgres flexible-server firewall-rule create. Dezelfde vereiste bestaat ook voor de opdracht in de volgende stap.
Verleen een door de gebruiker toegewezen beheerde identiteit de benodigde machtigingen op de restaurants_reviews database met de volgende opdracht az postgres flexible-server execute.
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
Als u een andere naam voor uw beheerde identiteit hebt gebruikt, vervangt u alle exemplaren van
my-ua-managed-id
in de opdracht door de naam van uw beheerde identiteit. De queryreeks bevat vijf exemplaren.Gebruik het e-mailadres van uw Azure-account voor de
--admin-user
-waarde.Gebruik voor de
--admin-password
-waarde de eerder verkregen uitvoer van het toegangstoken, zonder aanhalingstekens.Zorg ervoor dat de databasenaam is
restaurants_reviews
.
De bovenstaande Azure CLI-opdracht maakt verbinding met de restaurants_reviews-database op de server en geeft de volgende SQL-opdrachten uit:
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";
De web-app implementeren in Container Apps
Container-apps worden geïmplementeerd in Container Apps-omgevingen, die fungeren als een veilige grens. In de volgende stappen maakt u de omgeving, een container in de omgeving en configureert u de container zodat de website extern zichtbaar is.
Voor deze stappen is de Azure Container Apps-extensie vereist, containerapp-.
Maak een Container Apps-omgeving met de opdracht az containerapp env create .
az containerapp env create \ --name python-container-env \ --resource-group pythoncontainer-rg \ --location <location>
<locatie> is een van de Azure-locatienaamwaarden uit de uitvoer van de opdracht
az account list-locations -o table
.Haal de inloggegevens voor Azure Container Registry op met de opdracht az acr credential show.
az acr credential show -n <registry-name>
U gebruikt de gebruikersnaam en een van de wachtwoorden die worden geretourneerd uit de uitvoer van de opdracht wanneer u de container-app in stap 5 maakt.
Gebruik de opdracht az identity show om de client-ID en resource-ID op te halen van de door de gebruiker toegewezen beheerde identiteit.
az identity show --name my-ua-managed-id --resource-group pythoncontainer-rg --query "[clientId, id]" --output tsv
U gebruikt de waarde van de client-ID (GUID) en de resource-ID die door de opdracht wordt gegenereerd, wanneer u de container-app in stap 5 maakt. De resource-id heeft het volgende formulier:
/subscriptions/<subscription-id>/resourcegroups/pythoncontainer-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-ua-managed-id
Voer de volgende opdracht uit om een geheime sleutelwaarde te genereren.
python -c 'import secrets; print(secrets.token_hex())'
U gebruikt de waarde van de geheime sleutel om een omgevingsvariabele in te stellen wanneer u de container-app in stap 5 maakt.
Notitie
De weergegeven opdracht is voor een bash-shell. Afhankelijk van uw omgeving moet u python mogelijk aanroepen met behulp van
python3
. In Windows moet u de opdracht tussen dubbele aanhalingstekens in de parameter-c
plaatsen in plaats van enkele aanhalingstekens. Mogelijk moet u python ook aanroepen met behulp vanpy
ofpy -3
, afhankelijk van uw omgeving.Maak een container-app in de omgeving met de opdracht 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>"
Zorg ervoor dat u alle waarden tussen punthaken vervangt door waarden die u in deze handleiding gebruikt. Houd er rekening mee dat de naam van uw container-app uniek moet zijn in Azure.
De waarde van de parameter
--env-vars
is een tekenreeks die bestaat uit door spaties gescheiden waarden in de notatie key="value" met de volgende waarden:- 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="<uw geheime sleutel>"
De waarde voor
DBUSER
is de naam van uw door de gebruiker toegewezen beheerde identiteit.De waarde voor
AZURE_CLIENT_ID
is de client-id van uw door de gebruiker toegewezen beheerde identiteit. U hebt deze waarde in een vorige stap gekregen.De waarde voor
AZURE_SECRET_KEY
is de geheime sleutelwaarde die u in een vorige stap hebt gegenereerd.Alleen voor Django migreert en maakt u een databaseschema. (In de Flask-voorbeeld-app wordt deze automatisch uitgevoerd en kunt u deze stap overslaan.)
Maak verbinding met de opdracht az containerapp exec :
az containerapp exec \ --name python-container-app \ --resource-group pythoncontainer-rg
Typ vervolgens bij de opdrachtprompt van
python manage.py migrate
de shell.U hoeft niet te migreren voor revisies van de container.
Test de website.
Met de
az containerapp create
opdracht die u eerder hebt ingevoerd, wordt een toepassings-URL uitgevoerd die u kunt gebruiken om naar de app te bladeren. De URL eindigt op 'azurecontainerapps.io'. Navigeer naar de URL in een browser. U kunt ook de opdracht az containerapp browse gebruiken.
Hier volgt een voorbeeld van de voorbeeldwebsite na het toevoegen van een restaurant en twee beoordelingen.
Schermopname van een voorbeeld van de voorbeeldwebsite die in deze zelfstudie is gebouwd.
Problemen met implementatie oplossen
U bent de toepassings-URL vergeten om toegang te krijgen tot de website.
- Ga in Azure Portal naar de pagina Overzicht van de container-app en zoek naar de toepassings-URL.
- Ga in VS Code naar de Azure View (Ctrl+Shift+A) en vouw het abonnement uit waarin u werkt. Vouw het Container Apps-knooppunt uit, vouw vervolgens de beheerde omgeving uit en klik met de rechtermuisknop op python-container-app en selecteer Bladeren. De browser wordt geopend met de toepassings-URL.
- In Azure CLI gebruikt u de opdracht
az containerapp show -g pythoncontainer-rg -n python-container-app --query properties.configuration.ingress.fqdn
.
In VS Code retourneert de build-installatiekopieën in de Azure-taak een fout.
- Als u het bericht 'Fout: kan context niet downloaden. Controleer of de URL onjuist is.' in het venster UITVOER van VS Code en vernieuw het register in de Docker-extensie. Als u wilt vernieuwen, selecteert u de Docker-extensie, gaat u naar de sectie Registers, zoekt u het register en selecteert u deze.
- Als u de build-installatiekopieën opnieuw uitvoert in De Azure-taak , controleert u of uw register van een vorige uitvoering bestaat en als dat het het volgende is, gebruikt u deze.
In Azure Portal tijdens het maken van een container-app ziet u een toegangsfout met 'Kan geen toegang krijgen tot ACR'name.azurecr.io<>'.
- Deze fout treedt op wanneer beheerdersreferenties op de ACR zijn uitgeschakeld. Als u de beheerdersstatus in de portal wilt controleren, gaat u naar uw Azure Container Registry, selecteert u de resource Toegangssleutels en zorgt u ervoor dat de gebruiker Beheerder is ingeschakeld.
Uw containerinstallatiekopieën worden niet weergegeven in Azure Container Registry.
- Controleer de uitvoer van de Azure CLI-opdracht of VS Code-uitvoer en zoek naar berichten om te bevestigen dat deze zijn geslaagd.
- Controleer of de naam van het register juist is opgegeven in de build-opdracht met de Azure CLI of in de opdrachtprompts van VS Code.
- Zorg ervoor dat uw referenties niet zijn verlopen. Zoek in VS Code bijvoorbeeld het doelregister in de Docker-extensie en vernieuw het. Voer in Azure CLI de opdracht uit
az login
.
De website retourneert 'Ongeldige aanvraag (400)'.
- Controleer de PostgreSQL-omgevingsvariabelen die worden doorgegeven aan de container. De 400-fout geeft vaak aan dat de Python-code geen verbinding kan maken met het PostgreSQL-exemplaar.
- De voorbeeldcode die in deze zelfstudie wordt gebruikt, controleert op het bestaan van de containeromgevingsvariabele
RUNNING_IN_PRODUCTION
, die kan worden ingesteld op elke waarde, zoals '1'.
De website retourneert 'Niet gevonden (404)'.
- Controleer de toepassings-URL op de overzichtspagina voor de container. Als de toepassings-URL het woord 'intern' bevat, is inkomend verkeer niet juist ingesteld.
- Controleer het inkomend verkeer van de container. Ga bijvoorbeeld in Azure Portal naar de resource Inkomend verkeer van de container en zorg ervoor dat HTTP-inkomend verkeer is ingeschakeld en dat verkeer vanaf elke locatie wordt geaccepteerd.
De website wordt niet gestart, u ziet 'streamtime-out' of er wordt niets geretourneerd.
- Controleer de logboeken.
- Ga in Azure Portal naar de resource Revisiebeheer van de container-app en controleer de inrichtingsstatus van de container.
- Als 'Inrichten' wordt uitgevoerd, wacht u totdat het inrichten is voltooid.
- Als 'Mislukt' is, selecteert u de revisie en bekijkt u de consolelogboeken. Kies de volgorde van de kolommen om 'Tijd gegenereerd', 'Stream_s' en 'Log_s' weer te geven. Sorteer de logboeken op de meest recente eerste en zoek naar Python-stderr- en stdout-berichten in de kolom 'Stream_s'. Python-uitvoer 'afdrukken' bevat stdout-berichten .
- Gebruik met de Azure CLI de opdracht az containerapp logs show .
- Ga in Azure Portal naar de resource Revisiebeheer van de container-app en controleer de inrichtingsstatus van de container.
- Als u het Django-framework gebruikt, controleert u of de restaurants_reviews tabellen in de database aanwezig zijn. Als dat niet het is, gebruikt u een console om toegang te krijgen tot de container en deze uit te voeren
python manage.py migrate
.
- Controleer de logboeken.