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


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

Ez az oktatóanyag bemutatja, hogyan tárolózhat egy Python Flask vagy FastAPI webalkalmazást, és hogyan helyezheti üzembe Azure Container Apps. Azure Container Apps Docker tárolótechnológiát használ a beépített képek és az egyéni rendszerképek üzemeltetéséhez. További információ az Azure-ban való tárolóhasználatról: Az Azure tároló lehetőségek összehasonlítása.

Ebben az oktatóanyagban a Docker CLI és a Azure CLI használatával hoz létre egy Docker-képet. Ezt a képet üzembe helyezi az Azure Container Apps szolgáltatásban. Az üzembe helyezéshez használhatja a Visual Studio Code és a Azure Tools Extension.

Előfeltételek

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

A mintakód lekéré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", "--config", "gunicorn.conf.py", "app:app"]

Ez a példa a (belső) tárolóportot használja 50505 , de bármilyen ingyenes portot használhat.

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

Flask==3.1.0
gunicorn

Konfigurálja a gunicorn-t

A Gunicorn egy gunicorn.conf.py fájllal konfigurálható. Ha a gunicorn.conf.py fájl ugyanabban a könyvtárban van, ahol futgunicorn, nem kell megadnia a helyét a ENTRYPOINTCMD utasításában vagy 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 Gunicornt, 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

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

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

A képfájl lokális létrehozása és futtatása

Hozza létre helyileg a képet.

docker build --tag flask-demo .

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

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

Nyissa meg http://localhost:5000 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.

Azure webalkalmazás üzembe helyezése

A Docker-rendszerkép az Azure Container Appshez történő üzembe helyezéséhez használja az az containerapp up parancsot. (A következő parancsok a Bash shellhez vannak megadva. Módosítsa a folytatási karaktert (\), hogy az jellemzően illeszkedjen a többi shellhez.

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

Amikor az üzembe helyezés befejeződik, egy erőforráscsoporttal rendelkezik, benne a következő erőforrásokkal:

  • Egy Azure Container Registry
  • Konténeralkalmazások környezete
  • A tárolóalkalmazás, amely a webalkalmazás lemezképét futtatja
  • Egy Log Analytics munkaterület

A parancs kimenete az containerapp up tartalmazza az üzembe helyezett alkalmazás URL-címét. Nyissa meg az URL-címet a böngészőben a Azure futó webalkalmazás megtekintéséhez. Az URL-cím a következőképpen néz ki: https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, ahol az <generated-text> és <location-info> az üzembe helyezéshez egyedi értékek.

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

A kódfrissítések elvégzése után futtassa újra az előző az containerapp up parancsot. A parancs újraépíti a rendszerképet, és újra üzembe helyezi azt az Azure Container Apps. Amikor ismét futtatja a parancsot, az észleli, 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 az az acr build és az az containerapp frissítési parancsok együttes használatával újra üzembe helyezheti a tárolóalkalmazást.

Takarítás

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. Ez a leggyorsabb módja annak, hogy eltávolítsa az alkalmazáshoz használt összes Azure erőforrást.

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 a Azure portálon vagy Visual Studio Code is eltávolíthatja a Azure Eszközök bővítmény használatával.

Következő lépések

További információt a következő források tartalmaznak: