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 bij de opdrachtregel in uw console de git clone-opdracht om de geforkte repository te klonen in de map 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-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. Als u opdrachten uitvoert in een Git Bash-shell op een Windows-computer, voert u de volgende opdracht in voordat u doorgaat:

    #!/bin/bash
    export MSYS_NO_PATHCONV=1
    
  2. Maak een resource-groep door de opdracht az group create te gebruiken.

    #!/bin/bash
    RESOURCE_GROUP_NAME=<resource-group-name>
    LOCATION=<location>
    az group create \
        --name $RESOURCE_GROUP_NAME \
        --location $LOCATION
    
  3. Maak een containerregister door de opdracht az acr create te gebruiken.

    #!/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 true
    
  4. 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.

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

    #!/bin/bash
    az acr build \
        --registry $REGISTRY_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --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.

  6. 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.

    #!/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 \
      --yes
    
    

    Gebruik deze waarden:

    • <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.

    • --version: gebruik 16. Hiermee geeft u de PostgreSQL-versie op die moet worden gebruikt voor de server.

    • --tier: gebruik Burstable. Hiermee geeft u de prijscategorie voor de server op. 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.

    • --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.

    • --microsoft-entra-auth: gebruik Enabled. Hiermee schakelt u Microsoft Entra-verificatie op de server in.

    • --storage-size: gebruik 32. Hiermee geeft u de opslaggrootte op in gigabytes (GB) voor de server. Het minimum is 32 GB.

    • --backup-retention: gebruik 7. Hiermee geeft u het aantal dagen op dat back-ups voor de server moeten worden bewaard. Het minimum is 7 dagen.

    • --high-availability: gebruik Disabled. Hiermee wordt hoge beschikbaarheid voor de server uitgeschakeld. Hoge beschikbaarheid is niet vereist voor deze zelfstudie.

    • --yes: Hiermee worden de gebruiksvoorwaarden voor de PostgreSQL-server geaccepteerd.

    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.

    #!/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)
    
  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.

    #!/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 User
    
    
  4. Gebruik de az postgres flexible-server firewall-rule create opdracht om een regel toe te voegen waarmee uw web-app toegang heeft tot de flexibele PostgreSQL-server. In de volgende opdracht configureert u de firewall van de server om verbindingen van uw ontwikkelwerkstation te accepteren met behulp van uw openbare IP-adres:

    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"
        ```
    
    

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:

#!/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

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:

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

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.

    #!/bin/bash
    MY_ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
    echo $MY_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:

    #!/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);"
    

    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:

    #!/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"
    
    

    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:

    #!/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 python-container-env \
    --resource-group $RESOURCE_GROUP_NAME \
    --location $LOCATION
    
  2. Haal de aanmeldingsreferenties voor het Azure Container Registry-exemplaar op met behulp van de az acr credential show opdracht:

    #!/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)
    

    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:

    UA_CLIENT_ID=$(az identity show \
        --name "$UA_MANAGED_IDENTITY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query clientId -o tsv)
    UA_RESOURCE_ID=$(az identity show \
        --name "$UA_MANAGED_IDENTITY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query id -o 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:

    AZURE_SECRET_KEY=$(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 "$CONTAINER_APP_NAME" \
      --resource-group "$RESOURCE_GROUP" \
      --environment "$APP_ENV" \
      --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"
        ```
    
    
  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 $CONTAINER_APP_NAME \
            --resource-group $RESOURCE_GROUP_NAME
    

    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