Delen via


Zelfstudie: Een Python-web-app bouwen en implementeren met Azure Container Apps en PostgreSQL

Dit artikel maakt deel uit van een reeks zelfstudies over het in een container zetten en implementeren van een Python-web-app voor Azure Container Apps. Met Container Apps kunt u container-apps implementeren zonder dat u complexe infrastructuur hoeft te beheren.

In deze zelfstudie gaat u het volgende doen:

  • Een Python-voorbeeldweb-app (Django of Flask) containeriseren door een containerimage in de cloud te bouwen.
  • Deploy de containerimage naar Azure Container Apps.
  • Definieer omgevingsvariabelen waarmee de container-app verbinding kan maken met een Azure Database for PostgreSQL - Flexible Server exemplaar, waar de voorbeeld-app gegevens opslaat.

Het volgende diagram benadrukt de taken in deze tutorial: het bouwen en implementeren van een containerafbeelding.

Diagram van services die betrokken zijn bij het implementeren van een Python-app in Azure Container Apps, met de onderdelen die gaan over het handmatig bouwen van een afbeelding gemarkeerd.

Voorwaarden

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

U kunt Azure CLI-opdrachten uitvoeren in Azure Cloud Shell- of op een werkstation waarop de Azure CLI geïnstalleerd.

Als u lokaal werkt, volgt u deze stappen om u aan te melden en de benodigde modules voor deze zelfstudie te installeren:

  1. Meld u aan bij Azure en verifieer, indien nodig:

    az login
    
  2. Zorg ervoor dat u de nieuwste versie van de Azure CLI uitvoert:

    az upgrade
    
  3. Installeer of upgrade de containerapp en rdbms-connect Azure CLI-extensies met behulp van 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:

  1. Ga naar de GitHub-opslagplaats van de voorbeeld-app (Django of Flask) en selecteer Fork.

    Volg de stappen om de repository te forken naar uw GitHub-account. U kunt ook de repository rechtstreeks naar uw lokale machine downloaden zonder af te splitsen of een GitHub-account te hebben. Maar als u de downloadmethode gebruikt, kunt u in de volgende zelfstudie in deze reeks geen continue integratie en continue levering (CI/CD) instellen.

  2. 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
    
  3. Verander de map:

    cd python-container
    

Een containerinstallatiekopieën bouwen vanuit web-app-code

Nadat u deze stappen hebt uitgevoerd, hebt u een Azure Container Registry-exemplaar dat een Docker-containerinstallatiekopie bevat die is gebouwd op basis van de voorbeeldcode.

  1. Maak een resource-groep door de opdracht az group create te gebruiken.

    az group create \
        --name pythoncontainer-rg \
        --location <location>
    

    Vervang <locatie> door een van de Azure-locatie Name waarden uit de uitvoer van de opdracht az account list-locations -o table.

  2. Maak een containerregister door de opdracht az acr create te gebruiken.

    az acr create \
        --resource-group pythoncontainer-rg \
        --name <registry-name> \
        --sku Basic \
        --admin-enabled
    

    De naam die u gebruikt voor <registernaam> moet uniek zijn binnen Azure en moet 5 tot 50 alfanumerieke tekens bevatten.

  3. 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 de aanmelding is geslaagd, wordt het bericht 'Aanmelden geslaagd' weergegeven. Als u het register opent vanuit een abonnement dat verschilt van het abonnement waarin u het register hebt gemaakt, gebruikt u de --suffix-switch.

    Als het aanmelden mislukt, controleert u of de Docker-daemon wordt uitgevoerd op uw systeem.

  4. Maak de image met behulp van de opdracht az acr build.

    az acr build \
        --registry <registry-name> \
        --resource-group pythoncontainer-rg \
        --image pythoncontainer:latest .
    

    Deze overwegingen zijn van toepassing:

    • 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 de opslagplaats eerst naar de Cloud Shell-omgeving te halen. Verander de map naar de hoofdmap van het project, zodat de 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.

  5. Controleer of de containerafbeelding is gemaakt met behulp van 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.

  1. 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 voordat deze is voltooid.

    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 
    

    Gebruik deze waarden:

    • 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 binnen heel Azure. Het servereindpunt is https://<postgres-server-name>.postgres.database.azure.com. Toegestane tekens zijn cijfers van A tot Z, van 0 tot 9, en het min-teken (-).

    • <locatie>: gebruik dezelfde locatie die u hebt gebruikt voor de web-app. <locatie> is een van de Azure-locatie Name waarden uit de uitvoer van de opdracht az account list-locations -o table.

    • <admin-username>: de gebruikersnaam voor het beheerdersaccount. Het kan niet worden azure_superuser, admin, administrator, root, guestof public. Gebruik demoadmin voor deze zelfstudie.

    • <beheerderswachtwoord>: het 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

      Wanneer u gebruikersnamen of wachtwoorden maakt, niet het dollarteken ($) gebruiken. Wanneer u later omgevingsvariabelen met deze waarden maakt, heeft dat teken een speciale betekenis in de Linux-container die u gebruikt om Python-apps uit te voeren.

    • --active-directory-auth: deze waarde geeft aan of Microsoft Entra-verificatie is ingeschakeld op de PostgreSQL-server. Stel deze in op Enabled.

    • --sku-name: de naam van de prijscategorie en rekenconfiguratie; bijvoorbeeld Standard_B1ms. Zie Prijzen voor Azure Database for PostgreSQL voor meer informatie. Gebruik az postgres flexible-server list-skus --location <location>om beschikbare lagen weer te geven.

    • --public-access: gebruik 0.0.0.0. Hiermee is openbare toegang tot de server mogelijk 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 behulp van hulpprogramma's, moet u een firewallregel voor het IP-adres van uw werkstation toevoegen met behulp van de az postgres flexible-server firewall-rule create opdracht.

  2. Gebruik de opdracht az ad signed-in-user show om de object-id van uw gebruikersaccount op te halen. U gebruikt deze id in de volgende opdracht.

    az ad signed-in-user show --query id --output tsv
    
  3. 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 goedkopere optie voor workloads die niet voortdurend 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

Gebruik deze waarden:

  • pythoncontainer-rg: de naam van de resourcegroep die in deze tutorial 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 de shell alle afhankelijkheden voor u bevat.

U kunt ook verbinding maken met de flexibele Azure Database for PostgreSQL-server en een database maken met behulp van psql- of een IDE die Ondersteuning biedt voor PostgreSQL, zoals Azure Data Studio. Zie De beheerde identiteit configureren in de PostgreSQL-database verderop in dit artikel voor stappen die psql gebruiken.

Een door de gebruiker toegewezen beheerde identiteit maken

Maak een door de gebruiker toegewezen beheerde identiteit die moet worden 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. Of u nu de Azure CLI of psql gebruikt, u moet verbinding maken met de Azure PostgreSQL-server met een gebruiker die is geconfigureerd als Microsoft Entra-beheerder op uw serverexemplaar. Alleen Microsoft Entra-accounts die zijn geconfigureerd als postgreSQL-beheerder, kunnen beheerde identiteiten en andere Microsoft-beheerdersrollen op uw server configureren.

  1. Haal een toegangstoken op voor uw Azure-account met behulp van 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>
    
  2. Voeg de door de gebruiker toegewezen beheerde identiteit toe als databaserol op uw PostgreSQL-server met behulp van de az postgres flexible-server execute opdracht:

    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
    

    Gebruik deze waarden:

    • Als u een andere naam voor uw beheerde identiteit hebt gebruikt, vervangt u my-ua-managed-id in de opdracht pgaadauth_create_principal door de naam van uw beheerde identiteit.

    • Gebruik voor de --admin-user waarde het e-mailadres voor uw Azure-account.

    • Gebruik voor de --admin-password-waarde het toegangstoken uit de uitvoer van de vorige opdracht, zonder aanhalingstekens.

    • Zorg ervoor dat de databasenaam is postgres.

    Notitie

    Als u de opdracht az postgres flexible-server execute uitvoert op uw lokale werkstation, moet u ervoor zorgen dat u een firewallregel hebt toegevoegd voor het IP-adres van uw werkstation. U kunt een regel toevoegen met behulp van de opdracht az postgres flexible-server firewall-rule create. Dezelfde vereiste bestaat ook voor de opdracht in de volgende stap.

  3. Verleen de door de gebruiker toegewezen beheerde identiteit de benodigde machtigingen voor de restaurants_reviews-database met behulp van het volgende az postgres flexible-server execute commando:

    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
    

    Gebruik deze waarden:

    • 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 voor de --admin-user waarde het e-mailadres van uw Azure-account.

    • Gebruik voor de --admin-password waarde het toegangstoken uit de vorige uitvoer, zonder aanhalingstekens.

    • Zorg ervoor dat de databasenaam is restaurants_reviews.

    Deze 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 Azure Container Apps omgevingen, die fungeren als een veilige grens. In de volgende stappen maakt u de omgeving en een container in de omgeving. Vervolgens configureert u de container zodat de website extern zichtbaar is.

Voor deze stappen is de Azure Container Apps-extensie vereist, containerapp-.

  1. Maak een Container Apps-omgeving met behulp van 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-locatie Name waarden uit de uitvoer van de opdracht az account list-locations -o table.

  2. Haal de aanmeldingsreferenties voor het Azure Container Registry-exemplaar op met behulp van de az acr credential show opdracht:

    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.

  3. 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 uit de uitvoer van de opdracht 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.

  4. 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 opdracht die in deze stap wordt weergegeven, 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 plaatsen in de parameter -c in plaats van enkele aanhalingstekens. Mogelijk moet u Python ook aanroepen met behulp van py of py -3, afhankelijk van uw omgeving.

  5. Maak een container-app in de omgeving met behulp van 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 in punthaken vervangt door waarden die u in deze zelfstudie 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 key="value" notatie 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="\<your-secret-key>"

    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.

  6. Alleen voor Django wordt een databaseschema gemigreerd en aangemaakt. (In de Flask-voorbeeld-app wordt deze automatisch uitgevoerd en kunt u deze stap overslaan.)

    Maak verbinding met behulp van de opdracht az containerapp exec:

        az containerapp exec \
            --name python-container-app \
            --resource-group pythoncontainer-rg
    

    Voer vervolgens python manage.py migratein bij de opdrachtprompt van de shell.

    U hoeft niet te migreren voor revisies van de container.

  7. Test de website.

    De az containerapp create opdracht die u eerder hebt ingevoerd, voert een toepassings-URL uit die u kunt gebruiken om naar de app te bladeren. De URL eindigt op azurecontainerapps.io. Ga 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 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

In de Azure-portal:

  • Ga naar de pagina Overzicht van de container-app en zoek naar toepassings-URL.

In VS Code:

  1. Ga naar de Azure View (Ctrl+Shift+A) en vouw het abonnement uit waarin u werkt.
  2. Vouw het knooppunt Container Apps uit, vouw de beheerde omgeving uit, klik met de rechtermuisknop op python-container-appen selecteer Bladeren. VS Code opent de browser met de toepassings-URL.

In de Azure CLI:

  • Gebruik de opdracht az containerapp show -g pythoncontainer-rg -n python-container-app --query properties.configuration.ingress.fqdn.

In VS Code retourneert de Azure-taak voor het bouwen van beelden een fout.

Als u het bericht 'Fout: kan context niet downloaden. Controleer of de URL onjuist is in het venster VS Code Output, 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 Image in Azure taak opnieuw uitvoert, controleert u of het register van een vorige uitvoering bestaat. Zo ja, gebruik deze dan.

In Azure Portal wordt een toegangsfout weergegeven tijdens het maken van een container-app

Een toegangsfout met 'Kan geen toegang krijgen tot ACR'<naam>.azurecr.io', treedt op wanneer beheerdersreferenties in een Azure Container Registry-exemplaar zijn uitgeschakeld.

Als u de beheerdersstatus in de portal wilt controleren, gaat u naar uw Azure Container Registry-exemplaar, selecteert u de toegangssleutels resource en zorgt u ervoor dat gebruiker met beheerdersrechten is ingeschakeld.

Uw containerafbeelding verschijnt niet in het Azure Container Registry-exemplaar

  • Controleer de uitvoer van de Azure CLI-opdracht of de VS Code-uitvoer en zoek naar berichten die bevestigen dat het is 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 de Azure CLI az loginuit.

Website retourneert 'Ongeldige aanvraag (400)'

Als de fout 'Ongeldige aanvraag (400)' wordt weergegeven, controleert u de PostgreSQL-omgevingsvariabelen die zijn doorgegeven aan de container. De 400-fout geeft vaak aan dat de Python-code geen verbinding kan maken met het PostgreSQL-exemplaar.

Met de voorbeeldcode die in deze zelfstudie wordt gebruikt, wordt gecontroleerd op het bestaan van de containeromgevingsvariabele RUNNING_IN_PRODUCTION, die kan worden ingesteld op elke waarde (zoals 1).

Website retourneert 'Niet gevonden (404)'

  • Controleer de URL van de toepassing waarde 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 de Azure Portal naar de Ingress-resource van de container. Zorg ervoor dat HTTP-inkomend verkeer is ingeschakeld en Verkeer vanaf elke locatie accepteren is geselecteerd.

Website wordt niet gestart, u krijgt 'streamtime-out' of er wordt niets geretourneerd

  • Controleer de logboeken:
    • Ga naar de Azure Portal, ga naar de resource voor revisiebeheer van de container-app en controleer Voorzieningsstatus voor de container:
      • Als de status Inrichtingis, wacht u totdat het inrichtingsproces is voltooid.
      • Als de status Misluktis, selecteert u de revisie en bekijkt u de consolelogboeken. Kies de volgorde van de kolommen om tijd gegenereerd, Stream_sen Log_sweer te geven. Sorteer de logboeken op meest recente en zoek naar Python-stderr- en stdout-berichten in de kolom Stream_s. De uitvoer van Python print is stdout berichten.
    • Gebruik in de Azure CLI het az containerapp logs show commando.
  • 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.

Volgende stap