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:
Egy Azure-fiók, ahol webalkalmazást helyezhet üzembe az Azure Container Appsben. (Egy A folyamat során létrejön az Azure Container Registry és a Log Analytics-munkaterület .)
A helyi környezetben telepített Azure CLI, Docker és Docker CLI .
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 ENTRYPOINT
Dockerfile 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.
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.io
hasonló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.
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: