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 kontejnerizovat webovou aplikaci Python Flask nebo FastAPI a nasadit ji do Azure Container Apps. Azure Container Apps používá technologii kontejneru Docker k hostování integrovaných imagí i vlastních imagí. Další informace o používání kontejnerů v Azure najdete v tématu Porovnání možností kontejnerů v Azure.
V tomto kurzu pomocí Docker CLI a Azure CLI vytvoříte image Dockeru a nasadíte ji do Azure Container Apps. Nasazení můžete provést také pomocí rozšíření Visual Studio Code a rozšíření Azure Tools.
Požadavky
K dokončení tohoto kurzu potřebujete:
Účet Azure, kde můžete nasadit webovou aplikaci do Azure Container Apps. (Tento proces pro vás vytvoří Azure Container Registry a pracovní prostor Log Analytics.)
Azure CLI, Docker a Docker CLI nainstalované v místním prostředí.
Získání ukázkového kódu
V místním prostředí získejte kód.
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ává 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", "--config", "gunicorn.conf.py", "app:app"]
Tento příklad se používá 50505 pro port kontejneru (interní), ale můžete použít libovolný bezplatný port.
Zkontrolujte soubor requirements.txt a ujistěte se, že obsahuje gunicorn.
Flask==3.1.0
gunicorn
Konfigurace gunicornu
Gunicorn můžete nakonfigurovat pomocí souboru gunicorn.conf.py . Pokud je soubor gunicorn.conf.py ve stejném adresáři, ve kterém spouštíte gunicorn, nemusíte zadávat jeho umístění v souboru ENTRYPOINT ani v instrukci CMD. 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
Přidejte soubor .dockerignore pro vyloučení nepotřebných souborů z image.
.git*
**/*.pyc
.venv/
Sestavení a spuštění obrazu místně
Sestavte obraz lokálně.
Spusťte image místně v kontejneru Dockeru.
docker run --detach --publish 5000:50505 flask-demo
Otevřete http://localhost:5000 v prohlížeči a podívejte se na 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.
Nasazení webové aplikace do Azure
K nasazení image Dockeru do Azure Container Apps použijte příkaz az containerapp up. (Pro prostředí Bash se zobrazí následující příkazy. Změňte znak pokračování (\) podle potřeby pro ostatní příkazové prostředí.
az containerapp up \
--resource-group web-flask-aca-rg --name web-aca-app \
--ingress external --target-port 50505 --source .
Po dokončení nasazení máte ve skupině prostředků následující prostředky:
- Azure Container Registry
- Prostředí pro Container Apps
- Kontejnerová aplikace se spuštěnou imagí webové aplikace
- Pracovní prostor Log Analytics
Výstup az containerapp up příkazu zahrnuje adresu URL nasazené aplikace. Otevřete adresu URL v prohlížeči a zobrazte webovou aplikaci spuštěnou v Azure. Adresa URL vypadá jako následující https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, kde <generated-text> a <location-info> jsou jedinečné pro vaše nasazení.
Provádění aktualizací a opětovného nasazení
Po aktualizaci kódu spusťte předchozí az containerapp up příkaz znovu. Příkaz znovu sestaví image a znovu ji nasadí do Azure Container Apps. Když příkaz spustíte znovu, zjistí, že skupina prostředků a aplikace už existují, a aktualizuje jenom aplikaci typu kontejner.
Ve složitějších scénářích aktualizací můžete znovu nasadit příkazy az acr build a az containerapp update společně k aktualizaci aplikace kontejneru.
Vyčištění
Všechny prostředky Azure, které jste vytvořili v tomto kurzu, jsou ve stejné skupině prostředků. Odebráním skupiny prostředků odeberete všechny prostředky ve skupině prostředků. Je to nejrychlejší způsob, jak odebrat všechny Azure prostředky používané pro vaši aplikaci.
K odebrání prostředků použijte příkaz az group delete .
Skupinu můžete odebrat také na portálu Azure nebo v Visual Studio Code pomocí rozšíření Azure Tools.
Další kroky
Další informace najdete v následujících zdrojích informací: