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


Tárolóalapú Flask- vagy FastAPI-webalkalmazás üzembe helyezése Azure-alkalmazás Szolgáltatásban

Ez az oktatóanyag bemutatja, hogyan helyezhet üzembe Python Flask- vagy FastAPI-webalkalmazást Azure-alkalmazás Szolgáltatásban a Web App for Containers funkcióval. A Web App for Containers egyszerű helyszíni felületet biztosít a fejlesztőknek a teljes mértékben felügyelt Azure-alkalmazás szolgáltatásplatform előnyeinek kihasználásához, de egyetlen üzembe helyezhető összetevőt is szeretnének, amely egy alkalmazást és annak összes függőségét tartalmazza. A tárolók Azure-ban való használatáról további információt az Azure-tárolóbeállítások összehasonlítása című témakörben talál.

Ebben az oktatóanyagban a Docker parancssori felületével és a Dockerrel hozhat létre egy Docker-rendszerképet, és helyileg tesztelheti azt. Az Azure CLI használatával létrehozhat egy Docker-rendszerképet az Azure-ban, és üzembe helyezheti azt Azure-alkalmazás Szolgáltatásban. A Visual Studio Code-tal is üzembe helyezheti az Azure Tools bővítményt. Az Azure Container Appsben futtatandó Docker-rendszerképek létrehozására és létrehozására példa: Flask- vagy FastPI-webalkalmazás üzembe helyezése az Azure Container Appsben.

Feljegyzés

Ez az oktatóanyag egy Docker-rendszerkép létrehozását mutatja be, amely ezután futtatható az App Service-ben. Ez nem szükséges az App Service használatához. A kódot közvetlenül egy helyi munkaterületről telepítheti az App Service-be Docker-rendszerkép létrehozása nélkül. Példa: Rövid útmutató: Python -webalkalmazás (Django vagy Flask) üzembe helyezése Azure-alkalmazás Szolgáltatásban.

Előfeltételek

Az oktatóanyag elvégzéséhez a következőkre lesz szüksége:

A mintakód letöltése

A helyi környezetben kérje le a kódot.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git

Dockerfile és .dockerignore fájlok hozzáadása

Adjon hozzá egy Docker-fájlt , amely arra utasítja a Dockert, hogyan készítse el a lemezképet. A Dockerfile a Gunicorn, egy éles szintű webkiszolgáló használatát határozza meg, amely webkérelmeket továbbít a Flask- és FastAPI-keretrendszereknek. Az ENTRYPOINT és a CMD parancsok arra utasítják a Gunicornt, hogy kezelje az alkalmazásobjektumra vonatkozó kéréseket.

# syntax=docker/dockerfile:1

FROM python:3.11

WORKDIR /code

COPY requirements.txt .

RUN pip3 install -r requirements.txt

COPY . .

EXPOSE 50505

ENTRYPOINT ["gunicorn", "app:app"]

50505 ebben a példában a tárolóporthoz (belső) használható, de bármilyen ingyenes portot használhat.

Ellenőrizze a requirements.txt fájlt, hogy tartalmazza-e gunicorn.

Flask==2.2.2
gunicorn
Werkzeug==2.2.2

Adjon hozzá egy .dockerignore fájlt, hogy kizárja a felesleges fájlokat a képből.

.git*
**/*.pyc
.venv/

A gunicorn konfigurálása

A Gunicorn egy gunicorn.conf.py fájllal konfigurálható. Ha a gunicorn.conf.py fájl ugyanabban a könyvtárban található, ahol a gunicorn fut, nem kell megadnia a helyét a Dockerfile-ban. A konfigurációs fájl megadásáról további információt a Gunicorn beállításai című témakörben talál.

Ebben az oktatóanyagban a javasolt konfigurációs fájl úgy konfigurálja a gunicorn-t, hogy növelje a feldolgozók számát az elérhető processzormagok száma alapján. A gunicorn.conf.py fájlbeállításokról további információt a Gunicorn konfigurációja című témakörben talál.

# Gunicorn configuration file
import multiprocessing

max_requests = 1000
max_requests_jitter = 50

log_file = "-"

bind = "0.0.0.0:50505"

workers = (multiprocessing.cpu_count() * 2) + 1
threads = workers

timeout = 120

A rendszerkép helyi létrehozása és futtatása

Hozza létre helyileg a képet.

docker build --tag flask-demo .

Feljegyzés

Ha a docker build parancs hibát ad vissza, győződjön meg arról, hogy a docker-deamon fut. Windows rendszeren győződjön meg arról, hogy a Docker Desktop fut.

Futtassa a rendszerképet helyileg egy Docker-tárolóban.

docker run --detach --publish 5000:50505 flask-demo

Nyissa meg az http://localhost:5000 URL-címet a böngészőben a helyileg futó webalkalmazás megtekintéséhez.

A --detach beállítás a háttérben futtatja a tárolót. A --publish beállítás leképozza a tárolóportot a gazdagép egyik portjára. A gazdaport (külső) első a párban, a tárolóport (belső) pedig a második. További információ: Docker run reference.

Erőforráscsoport és Azure Container Registry létrehozása

  1. Hozzon létre egy csoportot az az group create paranccsal.

    az group create --name web-app-simple-rg --location eastus
    

    Az Azure-erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat. Erőforráscsoport létrehozásakor meg kell adnia egy helyet, például eastus-t.

  2. Hozzon létre egy Azure Container Registryt az az acr create paranccsal.

    az acr create --resource-group web-app-simple-rg \
    --name webappacr123 --sku Basic --admin-enabled true
    

    Feljegyzés

    A beállításjegyzék nevének egyedinek kell lennie az Azure-ban. Ha hibaüzenetet kap, próbálkozzon egy másik névvel. A beállításjegyzék neve 5–50 alfanumerikus karakterből állhat. Kötőjelek és aláhúzásjelek nem engedélyezettek. További információkért tekintse meg az Azure Container Registry névszabályai című témakört. Ha más nevet használ, győződjön meg arról, hogy a következő szakaszokban a beállításjegyzékre és a beállításjegyzék-összetevőkre hivatkozó parancsok helyett webappacr123 a saját nevét használja.

    Az Azure Container Registry egy privát Docker-beállításjegyzék, amely az Azure Container Instancesben, Azure-alkalmazás Service-ben, az Azure Kubernetes Service-ben és más szolgáltatásokban használható rendszerképeket tárolja. Beállításjegyzék létrehozásakor meg kell adnia egy nevet, termékváltozatot és erőforráscsoportot. A második parancs az az credential show paranccsal menti a jelszót egy változóba. A jelszót a rendszer egy későbbi lépésben hitelesíti a beállításjegyzékben.

  3. Állítson be egy környezeti változót a beállításjegyzék jelszavának értékére.

    ACR_PASSWORD=$(az acr credential show \
    --resource-group web-app-simple-rg \
    --name webappacr123 \
    --query "passwords[?name == 'password'].value" \
    --output tsv)
    

    A környezeti változó létrehozásának parancsa megjelenik a Bash-rendszerhéjhoz. Módosítsa a szintaxist és a folytatási karaktert (\) a többi rendszerhéjnak megfelelően.

    A jelszót (ACR_PASSWORD) az Azure Portalról is lekérheti a beállításjegyzékben, az Access-kulcsok kiválasztásával és a jelszó másolásával.

Rendszerkép létrehozása az Azure Container Registryben

Hozza létre a Docker-rendszerképet az Azure-ban az az acr buildelési paranccsal. A parancs a dockerfile-t használja az aktuális könyvtárban, és leküldi a lemezképet a beállításjegyzékbe.

az acr build \
  --resource-group web-app-simple-rg \
  --registry webappacr123 \
  --image webappsimple:latest .

A --registry beállítás megadja a beállításjegyzék nevét, a --image beállítás pedig a rendszerkép nevét. A kép neve formátuma registry.azurecr.io/repository:tag.

Webalkalmazás üzembe helyezése az Azure-ban

  1. Hozzon létre egy App Service-csomagot az az appservice plan paranccsal.

    az appservice plan create \
    --name webplan \
    --resource-group web-app-simple-rg \
    --sku B1 \
    --is-linux
    
  2. Hozza létre a webalkalmazást az az webapp create paranccsal.

    az webapp create \
    --resource-group web-app-simple-rg \
    --plan webplan --name webappsimple123 \
    --docker-registry-server-password $ACR_PASSWORD \
    --docker-registry-server-user webappacr123 \
    --role acrpull \
    --deployment-container-image-name webappacr123.azurecr.io/webappsimple:latest 
    

    Megjegyzések:

    • A webalkalmazás nevének egyedinek kell lennie az Azure-ban. Ha hibaüzenetet kap, próbálkozzon egy másik névvel. A név tartalmazhat alfanumerikus karaktereket és kötőjeleket, de nem indítható el és nem végződhet kötőjellel. További információ: Microsoft.Web name rules.

    • Ha az Azure Container Registry-hez hasonló webappacr123 nevet használ, győződjön meg arról, hogy megfelelően frissíti a paramétereket és --deployment-container-image-name a --docker-registry-server-user paramétereket.

    • A webalkalmazás létrehozása eltarthat néhány percig. Az üzembehelyezési naplókat az az webapp log tail paranccsal ellenőrizheti. Például: az webapp log tail --resource-group web-app-simple-rg --name webappsimple123. Ha a "bemelegítés" bejegyzéseket látja bennük, a tároló üzembe helyezése folyamatban van.

    • A webalkalmazás URL-címe <web-app-name>.azurewebsites.netpéldául https://webappsimple123.azurewebsites.net.

Frissítések és ismételt üzembe helyezés

A kódmódosítások végrehajtása után újra üzembe helyezheti az App Service-t az az acr build és az az webapp update parancsokkal.

A fölöslegessé vált elemek eltávolítása

Az oktatóanyagban létrehozott összes Azure-erőforrás ugyanabban az erőforráscsoportban található. Az erőforráscsoport eltávolítása eltávolítja az erőforráscsoport összes erőforrását, és ez a leggyorsabb módja az alkalmazáshoz használt összes Azure-erőforrás eltávolításának.

Az erőforrások eltávolításához használja az az group delete parancsot.

az group delete --name web-app-simple-rg

A csoportot az Azure Portalon, a Visual Studio Code-ban és az Azure Tools bővítményben is eltávolíthatja.

Következő lépések

További információkat találhat az alábbi forrásokban: