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


Flask- vagy FastAPI-webalkalmazás üzembe helyezése az Azure Container Appsben

Ez az oktatóanyag bemutatja, hogyan tárolózhat egy Python Flask- vagy FastAPI-webalkalmazást, és hogyan helyezheti üzembe az Azure Container Appsben. Az Azure Container Apps a Docker tárolótechnológiát használja a beépített rendszerképek és az egyéni rendszerképek üzemeltetéséhez. 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 CLI-vel és az Azure CLI-vel hoz létre egy Docker-rendszerképet, és üzembe helyezi azt az Azure Container Appsben. Üzembe helyezheti a Visual Studio Code-ot és az Azure Tools-bővítményt is.

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 gunicorn fut, nem kell megadnia a helyét a ENTRYPOINTDockerfile utasításában vagy CMD utasításá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ő CPU-magok 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 .

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.

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

A Docker-rendszerkép Azure Container Appsben való üzembe helyezéséhez használja az az containerapp up parancsot. (A Bash-rendszerhéjhoz az alábbi parancsok jelennek meg. Módosítsa a folytatási karaktert (\) a többi rendszerhéjnak megfelelően.)

az containerapp up \
  --resource-group web-flask-aca-rg --name web-aca-app \
  --ingress external --target-port 50505 --source .

Az üzembe helyezés befejeztével rendelkezik egy erőforráscsoporttal, benne a következő erőforrásokkal:

  • An Azure Container Registry
  • Container Apps-környezet
  • A webalkalmazás lemezképét futtató tárolóalkalmazás
  • Log Analytics-munkaterület

Az üzembe helyezett alkalmazás URL-címe a parancs kimenetében az containerapp up található. Nyissa meg az URL-címet a böngészőben az Azure-ban futó webalkalmazás megtekintéséhez. Az URL-cím formája a következőhöz https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.iohasonlóan fog kinézni, ahol az <location-info><generated-text> üzembe helyezés egyedi és egyedi.

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

A kódfrissítések elvégzése után újra futtathatja az előző az containerapp up parancsot, amely újraépíti a lemezképet, és újra üzembe helyezi azt az Azure Container Appsben. A parancs ismételt futtatása figyelembe veszi, hogy az erőforráscsoport és az alkalmazás már létezik, és csak a tárolóalkalmazást frissíti.

Összetettebb frissítési forgatókönyvekben újra üzembe helyezheti az az acr build és az az containerapp frissítési parancsait együtt a tárolóalkalmazás frissítéséhez.

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-flask-aca-rg

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

További lépések

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