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 Azure App Service 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é nasazovat pomocí 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é Docker a Docker CLI pro vytvoření Dockeru a jeho testování ve vašem 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/
Konfigurujte gunicorn
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
Sestavte a spusťte obraz místně
Sestavte obraz lokálně.
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 naleznete v referenci ke spuštění Dockeru.
Vytvoření skupiny prostředků a registru 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
webappacr123v příkazech, které v následujících částech odkazují na registr a jeho artefakty.Azure Container Registry je privátní registr Dockeru, který ukládá snímky pro použití ve službě Azure Container Instances, Azure App 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 odesílá obraz 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 vaše 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 odpovídajícím způsobem aktualizujete parametr--container-image-name.Parametry
--assign-identity,--role,--scopepovolí spravovanou identitu přiřazenou systémem k webové aplikaci a přiřadí jiAcrPullroli ve skupině prostředků. To dává spravované identitě oprávnění k stahování obrazů z libovolného Azure Container Registry ve skupině zdrojů.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 také odebrat v portálu Azure nebo v editoru Visual Studio Code a rozšíření Azure Tools.
Další kroky
Další informace naleznete v následujících zdrojích: