Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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. Ez a megközelítés leegyszerűsíti azokat a fejlesztőket, akik egy teljes körűen felügyelt platform előnyeit szeretnék kihasználni, miközben az alkalmazásukat egyetlen tárolóalapú összetevőként helyezik üzembe az összes függőséggel együtt. 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ét és a Dockert használja a Docker-rendszerképek helyi összeállításához és teszteléséhez. Ezután az Azure CLI használatával leküldheti a Docker-rendszerképet az Azure Container Registrybe (ACR), és üzembe helyezheti az Azure App Service-ben. A webalkalmazás a rendszer által hozzárendelt felügyelt identitással van konfigurálva a biztonságos, jelszó nélküli hozzáféréshez, hogy lekérje a rendszerképet az ACR-ből az Azure szerepköralapú hozzáférés-vezérlés (RBAC) használatával. A Visual Studio Code is üzembe helyezheti az Azure Tools bővítményt telepítve.
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.
Megjegyzés
Ez az oktatóanyag bemutatja, hogyan hozhat létre olyan Docker-rendszerképet, amely üzembe helyezhető az Azure App Service-ben. Docker-rendszerkép használata azonban nem szükséges az App Service-ben való üzembe helyezéshez. Az alkalmazáskódot közvetlenül a helyi munkaterületről is üzembe helyezheti az App Service-ben 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:
Egy Azure-fiók, ahol webalkalmazást helyezhet üzembe a Azure-alkalmazás Szolgáltatásban és az Azure Container Registryben. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Az Azure CLI-vel létrehozhat egy Docker-rendszerképet, és üzembe helyezheti azt az App Service-ben. Opcionálisan használhatja a Docker és a Docker CLI eszközöket Docker létrehozására és annak tesztelésére a helyi környezetben.
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
cd msdocs-python-flask-webapp-quickstart
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==3.1.0
gunicorn
Adjon hozzá egy .dockerignore fájlt, hogy kizárja a felesleges fájlokat a képből.
.git*
**/*.pyc
.venv/
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 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 képfájl lokális létrehozása és futtatása
Hozza létre helyileg a képet.
Megjegyzé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 ké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
Futtassa az az login parancsot az Azure-ba való bejelentkezéshez.
az loginFuttassa az az upgrade parancsot, hogy ellenőrizze, hogy az Azure CLI-verzió aktuális-e.
az upgradeHozzon létre egy csoportot az az group create paranccsal.
RESOURCE_GROUP_NAME=<resource-group-name> LOCATION=<location> az group create --name $RESOURCE_GROUP_NAME --location $LOCATIONAz 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. Cserélje le
<location>a kívánt helyre. Bizonyos termékváltozatok bizonyos helyeken nem érhetők el, ezért erre utaló hibaüzenet jelenhet meg. Használjon másik helyet, és próbálkozzon újra.Hozzon létre egy Azure Container Registryt az az acr create paranccsal. Cserélje le a
<container-registry-name>a példány egyedi nevére.CONTAINER_REGISTRY_NAME=<container-registry-name> az acr create --resource-group $RESOURCE_GROOUP_NAME \ --name $CONTAINER_REGISTRY_NAME --sku BasicMegjegyzé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
webappacr123a 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.
Rendszerkép létrehozása az Azure Container Registryben
Hozza létre a Docker-rendszerképet az Azure-ban az az acr build 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 $RESOURCE_GROUP_NAME \
--registry $CONTAINER_REGISTRY_NAME \
--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
Hozzon létre egy App Service-csomagot az az appservice plan paranccsal.
az appservice plan create \ --name webplan \ --resource-group $RESOURCE_GROUP_NAME \ --sku B1 \ --is-linuxÁllítson be egy környezeti változót az előfizetés azonosítójához. A paraméter a
--scopekövetkező parancsban használatos.SUBSCRIPTION_ID=$(az account show --query id --output tsv)A környezeti változó létrehozásához szükséges parancs a Bash shellhez van megadva. Módosítsa a szintaxist a többi környezethez megfelelő módon.
Hozza létre a webalkalmazást az az webapp create paranccsal.
export MSYS_NO_PATHCONV=1 # This line is for Windows users to prevent path conversion issues in Git Bash. az webapp create \ --resource-group $RESOURCE_GROUP_NAME \ --plan webplan --name <container-registry-name> \ --assign-identity [system] \ --role AcrPull \ --scope /subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP_NAME \ --acr-use-identity --acr-identity [system] \ --container-image-name $CONTAINER_REGISTRY_NAME.azurecr.io/webappsimple:latestMegjegyzé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 számára más nevet használ, mint a
webappacr123, győződjön meg arról, hogy a--container-image-nameparamétert megfelelően frissíti.A
--assign-identity,--roleés--scopeparaméterek lehetővé teszik a webalkalmazás rendszer által hozzárendelt felügyelt identitását, és hozzárendelik aAcrPullszerepkört az erőforráscsoporthoz. Ez lehetővé teszi a felügyelt identitás számára a rendszerképek lekérését az erőforráscsoport bármely Azure Container Registry-adatbázisából.A
--acr-use-identityés--acr-identityparaméterek úgy konfigurálják a webalkalmazást, hogy a rendszerszinten hozzárendelt felügyelt identitással töltse be a képeket az Azure Container Registryból.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" szöveget látja a bejegyzésekben, a konténer üzembe helyezése folyamatban van.A webalkalmazás URL-címe
<web-app-name>.azurewebsites.netpéldáulhttps://webappsimple123.azurewebsites.net.
Frissítések és ismételt üzembe helyezés
A kódmódosítások végrehajtása után újratelepítheti az App Service-t az az acr build és az webapp update parancsokkal.
Tisztí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, é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 $RESOURCE_GROUP_NAME --yes --no-wait
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ót a következő források tartalmaznak: