Megosztás a következőn keresztül:


Oktatóanyag: Python-webalkalmazás létrehozása és üzembe helyezése az Azure Container Apps és a PostgreSQL használatával

Ez a cikk egy oktatóanyag-sorozat része, amely bemutatja, hogyan tárolózhat és helyezhet üzembe Python-webalkalmazásokat az Azure Container Apps. A Container Apps lehetővé teszi a tárolóalapú alkalmazások üzembe helyezését összetett infrastruktúra kezelése nélkül.

Ebben az oktatóanyagban ön:

  • Python-minta webalkalmazás (Django vagy Flask) tárolóba helyezése tárolórendszerkép felhőben történő létrehozásával.
  • Helyezze üzembe a tárolórendszerképet az Azure Container Appsben.
  • Definiáljon olyan környezeti változókat, amelyek lehetővé teszik a tárolóalkalmazás számára, hogy csatlakozzon egy Azure Database for PostgreSQL - Rugalmas Szerver példányhoz, ahol a mintaalkalmazás adatokat tárol.

Az alábbi ábra az oktatóanyagban szereplő feladatokat emeli ki: tárolórendszerképek létrehozása és üzembe helyezése.

Python-alkalmazások Azure Container Apps-en való üzembe helyezésében részt vevő szolgáltatások diagramja, amelyen a rendszerkép manuális létrehozására vonatkozó részek kiemelve jelennek meg.

Előfeltételek

Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot.

Azure CLI-parancsokat futtathat Azure Cloud Shell vagy egy munkaállomáson, amelyen telepítve van az Azure CLI .

Ha helyileg fut, az alábbi lépéseket követve jelentkezzen be, és telepítse az oktatóanyaghoz szükséges modulokat:

  1. Jelentkezzen be az Azure-ba, és szükség esetén hitelesítse:

    az login
    
  2. Győződjön meg arról, hogy az Azure CLI legújabb verzióját futtatja:

    az upgrade
    
  3. Telepítse vagy frissítse a containerapp és rdbms-connect Azure CLI-bővítményeket az az extension add paranccsal:

    az extension add --name containerapp --upgrade
    az extension add --name rdbms-connect --upgrade
    

    Feljegyzés

    A rendszeren telepített bővítmények listázásához használhatja az az extension list parancsot. Például:

    az extension list --query [].name --output tsv
    

Mintaalkalmazás letöltése

Forkold és klónozd a mintakódot a fejlesztői környezetedbe.

  1. Nyissa meg a mintaalkalmazás GitHub-adattárát (Django vagy Flask), és válassza a Fork lehetőséget.

    Az adattár GitHub-fiókodba való forkolásához kövesse az alábbi lépéseket. A kódtárat közvetlenül a helyi gépére is letöltheti elágaztatás vagy GitHub-fiók nélkül. Ha azonban a letöltési módszert használja, a sorozat következő oktatóanyagában nem fogja tudni beállítani a folyamatos integrációt és a folyamatos kézbesítést (CI/CD).

  2. A konzol parancssorában a git klónozási paranccsal klónozza az elágaztatott adattárat a Python-container mappába:

    # 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. Módosítsa a könyvtárat:

    cd python-container
    

Tárolórendszerkép létrehozása webalkalmazás-kódból

A lépések elvégzése után rendelkezni fog egy Azure Container Registry-példánysal, amely a mintakódból létrehozott Docker-tárolórendszerképet tartalmazza.

  1. Ha parancsokat futtat egy Git Bash-héjban Windows operációs rendszerű számítógépen, folytatás előtt adja meg a következő parancsot:

    #!/bin/bash
    export MSYS_NO_PATHCONV=1
    
  2. Hozzon létre egy erőforráscsoportot az az group create paranccsal:

    #!/bin/bash
    RESOURCE_GROUP_NAME=<resource-group-name>
    LOCATION=<location>
    az group create \
        --name $RESOURCE_GROUP_NAME \
        --location $LOCATION
    
  3. Hozzon létre egy tárolóregisztrációt az az acr create paranccsal:

    #!/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. Jelentkezzen be a regisztrációs adatbázisba az az acr login parancs használatával:

    az acr login --name $REGISTRY_NAME
    

    A parancs hozzáadja a "azurecr.io" nevet a névhez a teljes beállításjegyzéknév létrehozásához. Ha a bejelentkezés sikeres, megjelenik a "Bejelentkezés sikeres" üzenet. Ha a beállításjegyzéket olyan előfizetésből éri el, amely eltér attól, amelyben a beállításjegyzéket létrehozta, használja a --suffix kapcsolót.

    Ha a bejelentkezés sikertelen, győződjön meg arról, hogy a Docker démon fut a rendszeren.

  5. A rendszerképet az az acr build paranccsal hozhatja létre:

    #!/bin/bash
    az acr build \
        --registry $REGISTRY_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --image pythoncontainer:latest .
    

    Ezeket a szempontokat kell figyelembe venni:

    • A parancs végén található pont (.) jelzi a buildelendő forráskód helyét. Ha nem a mintaalkalmazás gyökérkönyvtárában futtatja ezt a parancsot, adja meg a kód elérési útját.

    • Ha az Azure Cloud Shellben futtatja a parancsot, a git clone használatával először lekérheti az adattárat a Cloud Shell-környezetbe. Ezután módosítsa a könyvtárat a projekt gyökerére, hogy a pont (.) megfelelően legyen értelmezve.

    • Ha kihagyja a -t (ugyanazzal a beállítással --imagemegegyező) beállítást, a parancs egy helyi környezetbeli buildet állít elő anélkül, hogy leküldi azt a beállításjegyzékbe. A leküldés nélküli építés hasznos lehet a rendszerkép buildjeinek ellenőrzéséhez.

  6. Győződjön meg arról, hogy a tárolólemezkép az az acr-adattárlista paranccsal jött létre:

    az acr repository list --name $REGISTRY_NAME
    

Feljegyzés

Az ebben a szakaszban ismertetett lépések létrehoznak egy tárolóregisztrációs adatbázist az Alapszintű szolgáltatási szinten. Ez a szint költségoptimalizált, a fejlesztői forgatókönyvek számára megcélzott funkciókészlettel és átviteli sebességgel, és megfelel az oktatóanyag követelményeinek. Éles helyzetekben valószínűleg a Standard vagy a Premium szolgáltatási szintet használná. Ezek a szintek fokozott tárolási és átviteli sebességet biztosítanak.

További információ: Azure Container Registry szolgáltatásszintek. A díjszabásról további információt az Azure Container Registry díjszabási .

Rugalmas PostgreSQL-kiszolgálópéldány létrehozása

A mintaalkalmazás (Django vagy Flask) egy PostgreSQL-adatbázisban tárolja az éttermi felülvizsgálati adatokat. Ezekben a lépésekben létre kell hoznia az adatbázist tartalmazó kiszolgálót.

  1. Az az postgres flexible-server create paranccsal hozza létre a PostgreSQL-kiszolgálót az Azure-ban. Nem ritka, hogy a parancs néhány percig fut, mielőtt befejeződik.

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

    Használja az alábbi értékeket:

    • <postgres-server-name>: A PostgreSQL adatbázis szerver neve. Ennek a névnek az összes Azure-ban egyedinek kell lennie. A kiszolgálóvégpont https://<postgres-server-name>.postgres.database.azure.com. Az engedélyezett karakterek AZ, 09és kötőjel (-).

    • <hely>: Használja ugyanazt a helyet, amelyet a webalkalmazáshoz használt. <hely> az egyik azon Azure-hely Name értékek közül, amelyek a az account list-locations -o tableparancs kimenetében találhatók.

    • <rendszergazdai felhasználónév>: A rendszergazdai fiók felhasználóneve. Nem lehet azure_superuser, admin, administrator, root, guestvagy public. Ehhez az oktatóanyaghoz használja demoadmin.

    • <rendszergazdai jelszó>: A rendszergazdai felhasználó jelszava. Az alábbi kategóriák közül háromból 8–128 karaktert kell tartalmaznia: angol nagybetűk, angol kisbetűk, számok és nem alfanumerikus karakterek.

      Fontos

      Felhasználónevek vagy jelszavak létrehozásakor ne használja a dollárjel ($) karaktert. Később, amikor környezeti változókat hoz létre ezekkel az értékekkel, ez a karakter különleges jelentéssel rendelkezik a Python-alkalmazások futtatásához használt Linux-tárolóban.

    • --version: Használd 16. Meghatározza a kiszolgálóhoz használandó PostgreSQL-verziót.

    • --tier: Használd Burstable. Meghatározza a kiszolgáló tarifacsomagjait. A kipukkasztható szint alacsonyabb költségű lehetőség olyan számítási feladatokhoz, amelyeknek nincs szükségük a teljes cpu-ra folyamatosan, és megfelelnek az oktatóanyag követelményeinek.

    • --sku-name: A tarifacsomag és a számítási konfiguráció neve; például Standard_B1ms. További információkért tekintse meg az Azure Database for PostgreSQL díjszabását. Az elérhető szintek listázásához használja a az postgres flexible-server list-skus --location <location>.

    • --public-access: Használd 0.0.0.0. Lehetővé teszi a kiszolgáló nyilvános elérését bármely Azure-szolgáltatásból, például a Container Appsből.

    • --microsoft-entra-auth: Használd Enabled. Engedélyezi a Microsoft Entra-hitelesítést a kiszolgálón.

    • --storage-size: Használd 32. A kiszolgáló tárhelyméretét gigabájtban (GB) adja meg. A minimum 32 GB legyen.

    • --backup-retention: Használd 7. Megadja a kiszolgáló biztonsági mentéseinek megőrzéséhez szükséges napok számát. A minimum 7 napos.

    • --high-availability: Használd Disabled. Letiltja a kiszolgáló magas rendelkezésre állását. Ehhez az oktatóanyaghoz nincs szükség magas rendelkezésre állásra.

    • --yes: Elfogadja a PostgreSQL-kiszolgáló használati feltételeit.

    Feljegyzés

    Ha a PostgreSQL-kiszolgálót a helyi munkaállomásáról eszközökkel szeretné használni, akkor a az postgres flexible-server firewall-rule create paranccsal hozzá kell adnia egy tűzfalszabályt a munkaállomás IP-címéhez.

  2. Használja a az ad signed-in-user show parancsot a felhasználói fiókjának objektumazonosítójának lekérdezéséhez. Ezt az azonosítót a következő parancsban fogja használni.

    #!/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. A az postgres rugalmas kiszolgáló ad-admin create paranccsal adja hozzá a felhasználói fiókját Microsoft Entra-rendszergazdaként a PostgreSQL-kiszolgálón:

    #!/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. Az az postgres rugalmas kiszolgálói tűzfalszabály létrehozása paranccsal adjon hozzá egy szabályt, amely lehetővé teszi a webalkalmazás számára a rugalmas PostgreSQL-kiszolgáló elérését. Az alábbi parancsban úgy konfigurálja a kiszolgáló tűzfalát, hogy a nyilvános IP-cím használatával fogadja el a fejlesztői munkaállomásról érkező kapcsolatokat:

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

Feljegyzés

Az ebben a szakaszban ismertetett lépések létrehoznak egy PostgreSQL-kiszolgálót egyetlen virtuális maggal és korlátozott memóriával a Burstable tarifacsomagban. A kipukkasztható szint alacsonyabb költségű lehetőség olyan számítási feladatokhoz, amelyeknek nincs szükségük a teljes cpu-ra folyamatosan, és megfelelnek az oktatóanyag követelményeinek. Éles számítási feladatok esetén az általános célú vagy a memóriaoptimalizált tarifacsomagra frissíthet. Ezek a szintek nagyobb teljesítményt nyújtanak, de növelik a költségeket.

További információ az Azure Database for PostgreSQL - rugalmas kiszolgáló számítási lehetőségeiről: . A díjszabásról további információt az Azure Database for PostgreSQL díjszabásitalál.

Adatbázis létrehozása a kiszolgálón

Jelenleg egy PostgreSQL-kiszolgálóval rendelkezik. Ebben a szakaszban egy adatbázist hoz létre a kiszolgálón.

Az az postgres flexible-server db create parancs használatával hozzon létre egy restaurants_reviewsnevű adatbázist:

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

Az az postgres flexible-server connect paranccsal is csatlakozhat az adatbázishoz, majd psql-parancsokkal dolgozhat. Amikor a psql-lel dolgozik, általában könnyebb az Azure Cloud Shell- használata, mert a shell tartalmazza az összes függőséget.

A rugalmas Azure Database for PostgreSQL-kiszolgálóhoz is csatlakozhat, és létrehozhat egy adatbázist psql vagy egy Olyan IDE használatával, amely támogatja a PostgreSQL-t, például Azure Data Studio. A psql használatával kapcsolatos lépésekért tekintse meg A felügyelt identitás konfigurálása a PostgreSQL-adatbázisban a cikk későbbi részében.

Felhasználó által hozzárendelt felügyelt identitás létrehozása

Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást a tárolóalkalmazás identitásaként, amikor az Azure-ban fut.

Feljegyzés

Felhasználó által hozzárendelt felügyelt identitás létrehozásához a fióknak szüksége van a felügyelt identitás-közreműködői szerepkör-hozzárendelésre.

Az az identity create paranccsal hozzon létre egy felhasználó által hozzárendelt kezelői identitást:

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

Felügyelt identitás konfigurálása a PostgreSQL-adatbázisban

Konfigurálja a felügyelt identitást szerepkörként a PostgreSQL-kiszolgálón, majd adja meg a szükséges engedélyeket a restaurants_reviews adatbázishoz. Akár az Azure CLI-t, akár a psql-t használja, csatlakoznia kell az Azure PostgreSQL-kiszolgálóhoz egy olyan felhasználóval, aki Microsoft Entra-rendszergazdaként van konfigurálva a kiszolgálópéldányon. Csak a PostgreSQL-rendszergazdaként konfigurált Microsoft Entra-fiókok konfigurálhatnak felügyelt identitásokat és más Microsoft-rendszergazdai szerepköröket a kiszolgálón.

  1. Szerezze be az Azure-fiókjához tartozó hozzáférési jogkivonatot az az account get-access-token paranccsal. A hozzáférési jogkivonatot a következő lépésekben használhatja.

    #!/bin/bash
    MY_ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
    echo $MY_ACCESS_TOKEN
    
  2. Adja hozzá a felhasználó által hozzárendelt felügyelt identitást adatbázis-szerepkörként a PostgreSQL-kiszolgálóján a az postgres flexible-server execute parancs használatával:

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

    Feljegyzés

    Ha a az postgres flexible-server execute parancsot a helyi munkaállomáson futtatja, győződjön meg arról, hogy hozzáadott egy tűzfalszabályt a munkaállomás IP-címéhez. A az postgres flexible-server firewall-rule create parancs használatával hozzáadhat egy szabályt. Ugyanez a követelmény a következő lépésben is érvényes a parancsra.

  3. Adja meg a felhasználó által hozzárendelt felügyelt identitásnak a szükséges engedélyeket a restaurants_reviews adatbázishoz az alábbi az postgres rugalmas kiszolgálói végrehajtási parancs használatával:

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

    Ez az Azure CLI-parancs csatlakozik a kiszolgáló restaurants_reviews adatbázisához, és a következő SQL-parancsokat adja ki:

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

A webalkalmazás üzembe helyezése a Container Appsben

A tárolóalkalmazások az Azure Container Apps környezetekbenvannak üzembe helyezve, amelyek biztonságos határként működnek. A következő lépésekben létrehoz egy környezetet és egy tárolót a környezeten belül. Ezután úgy konfigurálja a tárolót, hogy a webhely külsőleg látható legyen.

Ezekhez a lépésekhez az Azure Container Apps bővítményre van szükség, containerapp.

  1. Hozzon létre egy Container Apps-környezetet a az containerapp env create parancs használatával:

    #!/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 $LOCATION
    
  2. Az Azure Container Registry-példány bejelentkezési hitelesítő adatainak lekérése az az acr credential show paranccsal:

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

    A tárolóalkalmazás 5. lépésben történő létrehozásakor a parancs kimenetéből visszaadott felhasználónevet és jelszó egyikét használja.

  3. Az az identity show paranccsal kérje le a felhasználó által hozzárendelt, felügyelt identitás ügyfélazonosítóját és erőforrásazonosítóját:

    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)
    

    Az 5. lépésben a tárolóalkalmazás létrehozásakor a parancs kimenetéből származó ügyfél-azonosító (GUID) és erőforrás-azonosító értékét kell használnia. Az erőforrás-azonosító a következő formátumot használja: /subscriptions/<subscription-id>/resourcegroups/pythoncontainer-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-ua-managed-id.

  4. A titkos kulcs értékének létrehozásához futtassa a következő parancsot:

    AZURE_SECRET_KEY=$(python -c 'import secrets; print(secrets.token_hex())')
    

    A titkos kulcs értékével környezeti változót állíthat be a tárolóalkalmazás 5. lépésben történő létrehozásakor.

    Feljegyzés

    Az ebben a lépésben megjelenő parancs egy Bash shell-hez készült. A környezetétől függően előfordulhat, hogy meg kell hívnia a Pythont python3használatával. Windows rendszeren a parancsot a -c paraméterben dupla idézőjelek közé kell foglalnia, nem pedig egyetlen idézőjelbe. Előfordulhat, hogy py vagy py -3használatával is meg kell hívnia a Pythont a környezetétől függően.

  5. Hozzon létre egy tárolóalkalmazást a környezetben az az containerapp create paranccsal:

    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"
    
  6. Csak Django esetén migráljon és hozzon létre egy adatbázissémát. (A Flask-mintaalkalmazásban ez automatikusan megtörténik, és kihagyhatja ezt a lépést.)

    Csatlakozás az az containerapp exec paranccsal:

        az containerapp exec \
            --name $CONTAINER_APP_NAME \
            --resource-group $RESOURCE_GROUP_NAME
    

    Ezután a rendszerhéj parancssorában adja meg a python manage.py migrate.

    A tároló változatainak migrálása nem szükséges.

  7. Tesztelje a webhelyet.

    A korábban megadott az containerapp create parancs egy alkalmazás URL-címét adja meg, amellyel tallózhat az alkalmazásban. Az URL-cím azurecontainerapps.iovégződik. Nyissa meg az URL-címet egy böngészőben. Másik lehetőségként használhatja az az containerapp browse parancsot.

Íme egy példa a minta webhelyre egy étterem hozzáadása és két vélemény hozzáadása után.

Képernyőkép az oktatóanyagban létrehozott mintawebhellyel.

Üzemelő példány hibaelhárítása

Elfelejtette az alkalmazás URL-címét a webhely eléréséhez

Az Azure Portalon:

  • Lépjen a tárolóalkalmazás Áttekintés lapjára, és keresse meg alkalmazás URL-címét.

A(z) VS Code-ban:

  1. Lépjen az Azure nézetre (Ctrl+Shift+A), majd bontsa ki azt az előfizetést, amelyben dolgozik.
  2. Nyissa meg a Container Apps csomópontot, bontsa ki a felügyelt környezetet, kattintson a jobb gombbal a python-container-appelemre, majd válassza a Tallózáslehetőséget. A VS Code megnyitja a böngészőt az alkalmazás URL-címével.

Az Azure CLI-ben:

  • Használja a az containerapp show -g pythoncontainer-rg -n python-container-app --query properties.configuration.ingress.fqdnparancsot.

A VS Code-ban az Azure-beli buildrendszerkép hibát ad vissza

Ha a következő üzenet jelenik meg: "Hiba: nem sikerült letölteni a környezetet. Ellenőrizze, hogy az URL-cím helytelen-e" a VS Code Kimeneti ablakban, frissítse a beállításjegyzéket a Docker-bővítményben. A frissítéshez válassza ki a Docker-bővítményt, lépjen a Regisztrációk szakaszra, keresse meg a regisztrációt, és válassza ki.

Ha ismét futtatja a Build Image-et az Azure feladatban, ellenőrizze, hogy létezik-e a beállításjegyzéke egy korábbi futtatásból. Ha igen, használja.

Az Azure Portalon hozzáférési hiba jelenik meg egy tárolóalkalmazás létrehozása során

A "Nem érhető el az ACR<név>.azurecr.io" hozzáférési hiba akkor fordul elő, ha egy Azure Container Registry-példány rendszergazdai hitelesítő adatai le vannak tiltva.

A rendszergazdai állapot portálon való ellenőrzéséhez nyissa meg az Azure Container Registry-példányt, válassza ki a hozzáférési kulcsokat erőforrást, és győződjön meg arról, hogy rendszergazdai felhasználói engedélyezve van.

A tárolórendszerkép nem jelenik meg az Azure Container Registry-példányban

  • Ellenőrizze az Azure CLI-parancs vagy a VS Code kimenetét, és keressen üzeneteket a sikeresség megerősítéséhez.
  • Ellenőrizze, hogy a beállításjegyzék neve helyesen lett-e megadva a buildelési parancsban az Azure CLI-vel vagy a VS Code feladatkéréseiben.
  • Győződjön meg arról, hogy a hitelesítő adatai nem jártak le. A VS Code-ban például keresse meg a célregisztrációs adatbázist a Docker-bővítményben, és frissítse. Az Azure CLI-ben futtassa a(z) az loginparancsot.

A webhely "Hibás kérés (400)" értéket ad vissza

Ha "Hibás kérés (400)" hibaüzenetet kap, ellenőrizze, hogy a PostgreSQL környezeti változói átkerülnek-e a tárolóba. A 400-os hiba gyakran azt jelzi, hogy a Python-kód nem tud csatlakozni a PostgreSQL-példányhoz.

Az oktatóanyagban használt mintakód ellenőrzi a tárolókörnyezet változójának meglétét RUNNING_IN_PRODUCTION, amely bármilyen értékre beállítható (például 1).

A webhely a "Nem található (404)" értéket adja vissza

  • Ellenőrizze az alkalmazás URL- értékét a tároló Áttekintés lapján. Ha az alkalmazás URL-címe tartalmazza a "belső" szót, a bejövő forgalom nincs megfelelően beállítva.
  • Ellenőrizze a tároló bejövő forgalmát. Az Azure portálon például lépjen a tároló Ingress erőforrásához. Győződjön meg arról, hogy HTTP-bejövő engedélyezve van, és a forgalom fogadása bárhonnan, van kiválasztva.

A webhely nem indul el, "stream-időtúllépést" kap, vagy nem ad vissza semmit.

  • Ellenőrizze a naplókat:
    • Az Azure Portalon nyissa meg a tárolóalkalmazás változatkezelési erőforrását, és ellenőrizze tároló üzembe helyezési állapotának:
      • Ha az állapot kiépítés alatt van, várjon, amíg a kiépítés befejeződik.
      • Ha az állapot Sikertelen, jelölje ki a változatot, és tekintse meg a konzol naplókat. Válassza ki az oszlopok sorrendjét a generált idő, Stream_sés Log_smegjelenítéséhez. Rendezze a naplókat a legutóbbiak szerint, és keresse meg a Python-stderr és stdout üzeneteket a Stream_s oszlopban. A Python print kimenete a stdout üzenet.
    • Az Azure CLI-ben használja az az containerapp logs show parancsot.
  • Ha a Django-keretrendszert használja, ellenőrizze, hogy a restaurants_reviews táblák léteznek-e az adatbázisban. Ha nem, használjon konzolt a tároló eléréséhez és futtatásához python manage.py migrate.

Következő lépés