Python-webalkalmazás létrehozása és üzembe helyezése az Azure Container Apps és a PostgreSQL használatával
Ez a cikk a Python-webalkalmazások Azure Container Appsben való tárolóba helyezéséről és üzembe helyezéséről szóló oktatóanyag része. A Container Apps lehetővé teszi a tárolóalapú alkalmazások üzembe helyezését összetett infrastruktúra kezelése nélkül.
Az oktatóanyag ezen részében megtudhatja, hogyan tárolózhat és helyezhet üzembe Egy Python-minta webalkalmazást (Django vagy Flask). A tárolórendszerképet a felhőben kell létrehoznia, és üzembe kell helyeznie az Azure Container Appsben. Olyan környezeti változókat határoz meg, amelyek lehetővé teszik a tárolóalkalmazás számára, hogy egy rugalmas Azure Database for PostgreSQL-példányhoz csatlakozzon, ahol a mintaalkalmazás tárolja az adatokat.
Ez a szolgáltatásdiagram a cikkben tárgyalt összetevőket emeli ki: tárolórendszerképek létrehozása és üzembe helyezése.
Mintaalkalmazás letöltése
A mintakód elágazása és klónozása a fejlesztői környezetbe.
1. lépés Nyissa meg a mintaalkalmazás GitHub-adattárát (Django vagy Flask), és válassza a Fork lehetőséget.
A lépéseket követve elágaztathatja a címtárat a GitHub-fiókjához. 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, azonban az oktatóanyag későbbi részében tárgyalt CI/CD-t nem fogja tudni beállítani.
2. lépés A git clone paranccsal klónozza az elágaztatott adattárat a python-container mappába:
# 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. lépés Könyvtár módosítása.
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 Registryvel, amely a mintakódból létrehozott Docker-tárolórendszerképet tartalmazza.
Az Azure CLI-parancsok futtathatók az Azure Cloud Shellben vagy egy munkaállomáson, amelyen telepítve van az Azure CLI .
1. lépés Hozzon létre egy erőforráscsoportot az az group create paranccsal.
az group create \
--name pythoncontainer-rg \
--location <location>
<A location (hely>) a parancs az account list-locations -o table
kimenetéből származó Azure-helynévértékek egyike.
2. lépés Hozzon létre egy tárolóregisztrációs adatbázist az az acr create paranccsal.
az acr create \
--resource-group pythoncontainer-rg \
--name <registry-name> \
--sku Basic \
--admin-enabled
<A beállításjegyzék-névnek> egyedinek kell lennie az Azure-ban, és 5–50 alfanumerikus karaktert kell tartalmaznia.
A rendszergazda számára létrehozott hitelesítő adatokat a következőkkel tekintheti meg:
az acr credential show \
--name <registry-name> \
--resource-group pythoncontainer-rg
3. lépés Jelentkezzen be a beállításjegyzékbe az az acr bejelentkezési paranccsal.
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 sikeres, a "Bejelentkezés sikeres" üzenet jelenik meg. Ha a beállításjegyzéket a beállításjegyzék létrehozásának alapjául szolgálótól eltérő előfizetésből éri el, használja a kapcsolót --suffix
.
4. lépés: Hozza létre a képet az az acr buildelési paranccsal.
az acr build \
--registry <registry-name> \
--resource-group pythoncontainer-rg \
--image pythoncontainer:latest .
Vegye figyelembe:
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, először
git clone
húzza le az adattárat a Cloud Shell-környezetbe, és 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--image
megegyező) 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.
5. lépés Győződjön meg arról, hogy a tárolólemezkép az az acr-adattár listaparancsával lett létrehozva.
az acr repository list --name <registry-name>
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.
Az Azure CLI-parancsok futtathatók az Azure Cloud Shellben vagy egy munkaállomáson, amelyen telepítve van az Azure CLI .
1. lépés Az az postgres flexible-server create paranccsal hozza létre a PostgreSQL-kiszolgálót az Azure-ban. Nem ritka, hogy ez a parancs néhány percig fut.
az postgres flexible-server create \
--resource-group pythoncontainer-rg \
--name <postgres-server-name> \
--location <location> \
--admin-user <admin-username> \
--admin-password <admin-password> \
--sku-name Standard_D2s_v3 \
--public-access 0.0.0.0
A "pythoncontainer-rg" → Az oktatóanyagban használt erőforráscsoport neve. Ha más nevet használt, módosítsa ezt az értéket.
<postgres-server-name> → A PostgreSQL-adatbáziskiszolgáló neve. Ennek a névnek minden Azure-ban egyedinek kell lennie. A kiszolgálóvégpont a következő: "https://< postgres-server-name.postgres.database.azure.com>". Az engedélyezett karakterek: "A"-"Z", "0"-"9" és "-".
<hely> → Használja ugyanazt a helyet, amelyet a webalkalmazáshoz használ. <A location (hely>) a parancs
az account list-locations -o table
kimenetéből származó Azure-helynévértékek egyike.<rendszergazdai felhasználónév> → rendszergazdai fiók felhasználóneve. Nem lehet "azure_superuser", "admin", "administrator", "root", "guest" vagy "public". Ehhez az oktatóanyaghoz használja a "demoadmin" kifejezést.
<rendszergazdai jelszó> A rendszergazda 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 "$" karaktert. Később olyan környezeti változókat hoz létre ezekkel az értékekkel, amelyekben a "$" karakter speciális jelentéssel rendelkezik a Python-alkalmazások futtatásához használt Linux-tárolóban.
<sku-name>
→ A tarifacsomag és a számítási konfiguráció neve, például "Standard_D2s_v3". További információkért tekintse meg az Azure Database for PostgreSQL díjszabását. Az elérhető termékváltozatok listázásához használja a következőtaz postgres flexible-server list-skus --location <location>
: .<public-access>
→ Használja a "0.0.0.0"-t, amely 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.
Feljegyzés
Ha a PostgreSQL-kiszolgálót a helyi munkaállomáson az Azure CLI-től eltérő eszközökkel szeretné használni, akkor hozzá kell adnia egy tűzfalszabályt az az postgres rugalmas kiszolgálói tűzfalszabály létrehozási parancsával.
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.
Használhatja a PostgreSQL interaktív terminál psql-t a helyi környezetben vagy az Azure Cloud Shellben, amely szintén elérhető az Azure Portalon. A psql használatakor gyakran egyszerűbb a Cloud Shell használata, mivel a rendszerhéjban minden függőség megtalálható.
1. lépés Csatlakozás az adatbázisba a psql használatával.
psql --host=<postgres-server-name>.postgres.database.azure.com \
--port=5432 \
--username=demoadmin@<postgres-server-name> \
--dbname=postgres
Ahol <a postgres-server-name> a PostgreSQL-kiszolgáló neve. A parancs kérni fogja a rendszergazdai jelszót.
Ha nem tud csatlakozni, indítsa újra az adatbázist, és próbálkozzon újra. Ha a helyi környezetből csatlakozik, az IP-címet hozzá kell adni az adatbázis-szolgáltatás tűzfalszabály-listájához.
2. lépés Hozza létre az adatbázist.
postgres=>
A parancssor típusa:
CREATE DATABASE restaurants_reviews;
A parancs végén található pontosvessző (";") szükséges. Az adatbázis sikeres létrehozásának ellenőrzéséhez használja a parancsot \c restaurants_reviews
. Írja be \?
a súgó megjelenítéséhez vagy \q
a kilépéshez.
Rugalmas Azure PostgreSQL-kiszolgálóhoz is csatlakozhat, és létrehozhat egy adatbázist az Azure Data Studio vagy bármely más IDE használatával, amely támogatja a PostgreSQL-t.
A webalkalmazás üzembe helyezése a Container Appsben
A tárolóalkalmazások a Container Apps-környezetekben vannak üzembe helyezve, amelyek biztonságos határként működnek. A következő lépésekben létrehoz egy környezetet, egy tárolót a környezetben, és úgy konfigurálja a tárolót, hogy a webhely külsőleg látható legyen.
1. lépés Jelentkezzen be az Azure-ba, és szükség esetén hitelesítse magát.
az login
2. lépés Telepítse vagy frissítse az Azure Container Apps bővítményét az extension add paranccsal.
az extension add --name containerapp --upgrade
3. lépés Hozzon létre egy Container Apps-környezetet az az containerapp env create paranccsal.
az containerapp env create \
--name python-container-env \
--resource-group pythoncontainer-rg \
--location <location>
<A location (hely>) a parancs az account list-locations -o table
kimenetéből származó Azure-helynévértékek egyike.
4. lépés: Szerezze be az Azure Container Registry bejelentkezési hitelesítő adatait.
az acr credential show -n <registry-name>
Használja a parancs kimenetéből visszaadott felhasználónevet és jelszót.
5. lépés Hozzon létre egy tárolóalkalmazást a környezetben az az containerapp create paranccsal.
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 8000 \
--registry-server <registry-name>.azurecr.io \
--registry-username <registry-username> \
--registry-password <registry-password> \
--env-vars <env-variable-string>
--query properties.configuration.ingress.fqdn
<Az env-variable-string> egy szóközzel elválasztott értékekből álló sztring a key="value" formátumban az alábbi értékekkel.
- AZURE_POSTGRESQL_HOST=<postgres-server-name.postgres.database.azure.com>
- AZURE_POSTGRESQL_DATABAStandard kiadás=restaurants_reviews
- AZURE_POSTGRESQL_UStandard kiadás RNAME=demoadmin
- AZURE_POSTGRESQL_PASSWORD=<db-password>
- RUNNING_IN_PRODUCTION=1
- AZURE_Standard kiadásCRET_KEY=<YOUR-Standard kiadás CRET-KEY>
Érték létrehozása AZURE_SECRET_KEY
a következő kimenettel python -c 'import secrets; print(secrets.token_hex())'
: .
Példa: --env-vars AZURE_POSTGRESQL_HOST="my-postgres-server.postgres.database.azure.com" AZURE_POSTGRESQL_DATABASE="restaurants_reviews" AZURE_POSTGRESQL_USERNAME="demoadmin" AZURE_POSTGRESQL_PASSWORD="somepassword" RUNNING_IN_PRODUCTION="1" AZURE_SECRET_KEY=asdfasdfasdf
7. lépés Csak Django esetén migrálja és hozza létre az 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 python-container-app \
--resource-group pythoncontainer-rg
Ezután írja be a rendszerhéj parancssorát python manage.py migrate
.
A tároló változatainak migrálása nem szükséges.
8. lépés Tesztelje a webhelyet.
A az containerapp create
korábban megadott parancs egy alkalmazás URL-címét adja ki, a segítségével tallózhat az alkalmazáshoz. Az URL-cím "azurecontainerapps.io" végződik. Navigáljon az URL-címre 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 és két vélemény hozzáadása után.
Ü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 nyissa meg a tárolóalkalmazás Áttekintés lapját, és keresse meg az alkalmazás URL-címét.
- A VS Code-ban lépjen az Azure-bővítményre, és válassza a Container Apps szakaszt. Bontsa ki az előfizetést, bontsa ki a tárolókörnyezetet, és amikor megtalálta a tárolóalkalmazást, kattintson a jobb gombbal a python-container-app elemre , és válassza a Tallózás lehetőséget.
- Az Azure CLI esetén a következő parancsot használja:
az containerapp show -g pythoncontainer-rg -n python-container-app --query properties.configuration.ingress.fqdn
.
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 Output ablakban, majd 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ós adatbázisok szakaszra, keresse meg a beállításjegyzéket, és jelölje ki.
- Ha ismét futtatja a buildrendszerképet az Azure-feladatban , ellenőrizze, hogy létezik-e az előző futtatásból származó beállításjegyzék, és ha igen, használja-e.
Az Azure Portalon egy tárolóalkalmazás létrehozása során megjelenik egy hozzáférési hiba, amely a következőt tartalmazza: "Nem lehet hozzáférni az ACR -hez "<name.azurecr.io>".
- Ez a hiba akkor fordul elő, ha az ACR rendszergazdai hitelesítő adatai le vannak tiltva. A rendszergazdai állapot portálon való ellenőrzéséhez nyissa meg az Azure Container Registryt, válassza ki a Hozzáférési kulcsok erőforrást, és győződjön meg arról, hogy Rendszergazda felhasználó engedélyezve van.
A tárolórendszerkép nem jelenik meg az Azure Container Registryben.
- Ellenőrizze az Azure CLI-parancs vagy a VS Code kimenetének 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 következőt
az login
: .
A webhely a "Hibás kérés (400)" értéket adja vissza.
- 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
RUNNING_IN_PRODUCTION
meglétét, 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-címét a tároló Áttekintés lapján. Ha az alkalmazás URL-címe tartalmazza a "belső" szót, akkor a bejövő forgalom nincs megfelelően beállítva.
- Ellenőrizze a tároló bejövő forgalmát. Az Azure Portalon például lépjen a tároló bejövő forgalmának erőforrására, és győződjön meg arról, hogy a HTTP-bejövő forgalom engedélyezve van, és a bárhonnan érkező forgalom elfogadása lehetőség van kiválasztva.
A webhely nem indul el, megjelenik a "stream időtúllépése", vagy semmit nem ad vissza.
- 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 a tároló kiépítési állapotát .
- Ha "Kiépítés", várjon, amíg a kiépítés befejeződött.
- Ha "Sikertelen", válassza ki a változatot, és tekintse meg a konzolnaplókat. Válassza ki az oszlopok sorrendjét a "Generált idő", a "Stream_s" és a "Log_s" megjelenítéséhez. Először rendezze a naplókat, és keresse meg a Python stderr - és stdout-üzeneteket a "Stream_s" oszlopban. A Python "print" kimenete stdout üzenetek lesznek.
- Az Azure CLI-vel használja az az containerapp logs show parancsot.
- Az Azure Portalon nyissa meg a Tárolóalkalmazás változatkezelési erőforrását, és ellenőrizze a tároló kiépítési állapotát .
- 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
.
- Ellenőrizze a naplókat.
Következő lépés
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: