Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu se dozvíte, jak nasadit webovou aplikaci Python Flask nebo FastAPI do služby Aplikace Azure Pomocífunkce Web App for Containers. Tento přístup poskytuje zjednodušenou cestu pro vývojáře, kteří chtějí výhody plně spravované platformy při nasazování aplikace jako jediného kontejnerizovaného artefaktu se všemi zahrnutými závislostmi. Další informace o používání kontejnerů v Azure najdete v tématu Porovnání možností kontejneru Azure.
V tomto kurzu použijete rozhraní příkazového řádku Dockeru a Docker k volitelnému sestavení a otestování image Dockeru místně. Pak pomocí Azure CLI odešlete image Dockeru do služby Azure Container Registry (ACR) a nasadíte ji do služby Azure App Service. Webová aplikace se konfiguruje se spravovanou identitou přiřazenou systémem pro zabezpečený přístup bez hesla pro vyžádání image z ACR pomocí řízení přístupu na základě role v Azure (RBAC). Můžete také nasadit pomocí editoru Visual Studio Code s nainstalovaným rozšířením Azure Tools.
Příklad vytvoření a vytvoření image Dockeru pro spuštění v Azure Container Apps najdete v tématu Nasazení webové aplikace Flask nebo FastPI ve službě Azure Container Apps.
Poznámka:
Tento kurz ukazuje, jak vytvořit image Dockeru, kterou je možné nasadit do služby Azure App Service. Použití Docker image však není vyžadováno pro nasazení do služby App Service. Kód aplikace můžete také nasadit přímo z místního pracovního prostoru do služby App Service bez vytvoření image Dockeru. Příklad najdete v tématu Rychlý start: Nasazení webové aplikace Python (Django nebo Flask) do služby Aplikace Azure Service.
Požadavky
Pro absolvování tohoto kurzu potřebujete:
Účet Azure, ve kterém můžete nasadit webovou aplikaci do služby Aplikace Azure Service a Azure Container Registry. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Azure CLI pro vytvoření image Dockeru a jeho nasazení do App Service Volitelně také Dockera Rozhraní příkazového řádku Dockeru vytvoří Docker a otestuje ho v místním prostředí.
Získání ukázkového kódu
V místním prostředí získejte kód.
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git
cd msdocs-python-flask-webapp-quickstart
Přidání souborů Dockerfile a souborů .dockerignore
Přidejte soubor Dockerfile , který dá Dockeru pokyn, jak sestavit image. Soubor Dockerfile určuje použití Gunicornu, webového serveru na úrovni produkce, který předává webové požadavky na architektury Flask a FastAPI. Příkazy ENTRYPOINT a CMD dávají Gunicorn pokyn, aby zpracovával požadavky na objekt aplikace.
# 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 se používá pro port kontejneru (interní) v tomto příkladu, ale můžete použít libovolný bezplatný port.
Zkontrolujte soubor requirements.txt a ujistěte se, že obsahuje gunicorn.
Flask==3.1.0
gunicorn
Přidejte soubor .dockerignore pro vyloučení nepotřebných souborů z image.
.git*
**/*.pyc
.venv/
Konfigurace gunicornu
Gunicorn lze nakonfigurovat s gunicorn.conf.py souborem. Když se soubor gunicorn.conf.py nachází ve stejném adresáři, ve kterém je spuštěn gunicorn, nemusíte v souboru Dockerfile zadávat jeho umístění. Další informace o zadání konfiguračního souboru naleznete v tématu Nastavení Gunicorn.
V tomto kurzu navrhovaný konfigurační soubor nakonfiguruje gunicorn, aby zvýšil počet pracovních procesů na základě počtu dostupných jader procesoru. Další informace o nastavení souboru gunicorn.conf.py naleznete v tématu Konfigurace Gunicorn.
# 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
Sestavení a místní spuštění image
Sestavte image místně.
Poznámka:
docker build Pokud příkaz vrátí chybu, ujistěte se, že je spuštěný deamon Dockeru. Ve Windows se ujistěte, že je spuštěná aplikace Docker Desktop.
Spusťte image místně v kontejneru Dockeru.
docker run --detach --publish 5000:50505 flask-demo
http://localhost:5000 Otevřete adresu URL v prohlížeči a zobrazte webovou aplikaci spuštěnou místně.
Tato --detach možnost spustí kontejner na pozadí. Možnost --publish mapuje port kontejneru na port na hostiteli. Port hostitele (externí) je první ve dvojici a port kontejneru (interní) je druhý. Další informace najdete v referenčních informacích ke spuštění Dockeru.
Vytvoření skupiny prostředků a služby Azure Container Registry
Spuštěním příkazu az login se přihlaste k Azure.
az loginSpuštěním příkazu az upgrade se ujistěte, že je vaše verze Azure CLI aktuální.
az upgradeVytvořte skupinu pomocí příkazu az group create .
RESOURCE_GROUP_NAME=<resource-group-name> LOCATION=<location> az group create --name $RESOURCE_GROUP_NAME --location $LOCATIONSkupina prostředků Azure je logický kontejner, ve kterém se nasazují a spravují prostředky Azure. Při vytváření skupiny prostředků zadáte umístění, například eastus. Nahraďte
<location>umístěním, které zvolíte. Některé skladové položky nejsou v určitých umístěních dostupné, takže se může zobrazit chyba, která to značí. Použijte jiné umístění a zkuste to znovu.Pomocí příkazu az acr create vytvořte službu Azure Container Registry. Nahraďte
<container-registry-name>jedinečným názvem vaší instance.CONTAINER_REGISTRY_NAME=<container-registry-name> az acr create --resource-group $RESOURCE_GROOUP_NAME \ --name $CONTAINER_REGISTRY_NAME --sku BasicPoznámka:
Název registru musí být v Azure jedinečný. Pokud se zobrazí chyba, zkuste jiný název. Názvy registru můžou obsahovat 5 až 50 alfanumerických znaků. Spojovníky a podtržítka nejsou povoleny. Další informace najdete v pravidlech názvů služby Azure Container Registry. Pokud používáte jiný název, ujistěte se, že používáte své jméno místo
webappacr123příkazů, které odkazují na artefakty registru a registru v následujících částech.Azure Container Registry je privátní registr Dockeru, který ukládá image pro použití ve službě Azure Container Instances, Aplikace Azure Service, Azure Kubernetes Service a dalších službách. Při vytváření registru zadáte název, skladovou položku a skupinu prostředků.
Sestavení image ve službě Azure Container Registry
Sestavte image Dockeru v Azure pomocí příkazu az acr build . Příkaz používá soubor Dockerfile v aktuálním adresáři a nasdílí image do registru.
az acr build \
--resource-group $RESOURCE_GROUP_NAME \
--registry $CONTAINER_REGISTRY_NAME \
--image webappsimple:latest .
Možnost --registry určuje název registru a --image možnost určuje název image. Název obrázku je ve formátu registry.azurecr.io/repository:tag.
Nasazení webové aplikace do Azure
Vytvořte plán služby App Service pomocí příkazu az appservice plan .
az appservice plan create \ --name webplan \ --resource-group $RESOURCE_GROUP_NAME \ --sku B1 \ --is-linuxNastavte proměnnou prostředí na ID předplatného. Používá se v parametru
--scopev dalším příkazu.SUBSCRIPTION_ID=$(az account show --query id --output tsv)Příkaz pro vytvoření proměnné prostředí se zobrazí pro prostředí Bash. Změňte syntaxi podle potřeby pro jiná prostředí.
Vytvořte webovou aplikaci pomocí příkazu az webapp create .
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:latestPoznámky:
Název webové aplikace musí být v Azure jedinečný. Pokud se zobrazí chyba, zkuste jiný název. Název se může skládat z alfanumerických znaků a pomlček, ale nemůže začínat ani končit spojovníkem. Další informace najdete v pravidlech názvů Microsoft.Web.
Pokud používáte jiný název než
webappacr123pro azure Container Registry, ujistěte se, že parametr odpovídajícím způsobem aktualizujete--container-image-name.Parametry
--assign-identitya--role,--scopepovolí spravovanou identitu přiřazenou systémem ve webové aplikaci a přiřadí jiAcrPullroli ve skupině prostředků. To dává spravované identitě oprávnění k načtení imagí z libovolné služby Azure Container Registry ve skupině prostředků.Parametry
--acr-use-identitya--acr-identitynakonfigurují webovou aplikaci tak, aby používala spravovanou identitu přiřazenou systémem k načtení imagí ze služby Azure Container Registry.Vytvoření webové aplikace může trvat několik minut. Protokoly nasazení můžete zkontrolovat pomocí příkazu az webapp log tail . Například
az webapp log tail --resource-group web-app-simple-rg --name webappsimple123. Pokud se v nich zobrazí položky s textem "warmup", kontejner se nasazuje.Adresa URL webové aplikace je
<web-app-name>.azurewebsites.netnapříkladhttps://webappsimple123.azurewebsites.net.
Provádění aktualizací a opětovného nasazení
Po provedení změn kódu můžete službu App Service znovu nasadit pomocí příkazů az acr build a az webapp update .
Vyčištění
Všechny prostředky Azure vytvořené v tomto kurzu jsou ve stejné skupině prostředků. Odebráním skupiny prostředků odeberete všechny prostředky ve skupině prostředků a nejrychlejším způsobem, jak odebrat všechny prostředky Azure používané pro vaši aplikaci.
K odebrání prostředků použijte příkaz az group delete .
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Skupinu můžete odebrat také na webu Azure Portal nebo v editoru Visual Studio Code a rozšíření Azure Tools.
Další kroky
Další informace naleznete v následujících zdrojích: