Nasazení webové aplikace Flask nebo FastAPI v Azure Container Apps
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 Dockeru 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í kontejneru Azure.
V tomto kurzu pomocí Rozhraní příkazového řádku Dockeru a Azure CLI vytvoříte image Dockeru a nasadíte ji do Azure Container Apps. Můžete také nasadit pomocí editoru Visual Studio Code a rozšíření Azure Tools.
Požadavky
Pro absolvování tohoto kurzu potřebujete:
Účet Azure, ve kterém můžete nasadit webovou aplikaci do Azure Container Apps. (An V procesu se pro vás vytvoří azure Container Registry a pracovní prostor Služby Log Analytics.)
Azure CLI, Docker a Rozhraní příkazového řádku Dockeru nainstalované 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.
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==2.2.2
gunicorn
Werkzeug==2.2.2
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. Pokud se soubor gunicorn.conf.py nachází ve stejném adresářigunicorn
, ve kterém je spuštěný, nemusíte v souboru Dockerfile ani CMD
instrukci jeho umístění ENTRYPOINT
zadávat. Další informace o zadání konfiguračního souboru naleznete v tématu Nastavení Gunicorn.
V tomto kurzu navrhovaný konfigurační soubor konfiguruje 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ě.
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.
Nasazení webové aplikace do Azure
Pokud chcete nasadit 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í 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:
- An Azure Container Registry
- Prostředí Container Apps
- Kontejnerová aplikace se spuštěnou imagí webové aplikace
- Pracovní prostor služby Log Analytics
Adresa URL nasazené aplikace je ve výstupu az containerapp up
příkazu. Otevřete adresu URL v prohlížeči a zobrazte webovou aplikaci spuštěnou v Azure. Forma adresy URL bude vypadat jako následující https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io
, kde <generated-text>
jsou jedinečné pro <location-info>
vaše nasazení.
Provádění aktualizací a opětovného nasazení
Po aktualizaci kódu můžete znovu spustit předchozí az containerapp up
příkaz, který znovu sestaví image a znovu ji nasadí do Azure Container Apps. Opětovné spuštění příkazu bere v úvahu, že skupina prostředků a aplikace už existují, a aktualizuje se jenom aplikace typu kontejner.
Ve složitějších scénářích aktualizací můžete znovu nasadit příkazy az acr build a az containerapp update a aktualizovat aplikaci kontejneru.
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 .
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: