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 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. Pomocí Visual Studio Code a rozšíření Azure Tools můžete také provést nasazení.
Požadavky
K dokončení tohoto kurzu potřebujete:
Účet Azure, ve kterém můžete nasadit webovou aplikaci do Azure Container Apps. (V procesu se pro vás vytvoří Azure Container Registry a pracovní prostor Log Analytics workspace.)
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==3.1.0
gunicorn
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 ENTRYPOINT ani CMD instrukci jeho umístění 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
Přidejte soubor .dockerignore pro vyloučení nepotřebných souborů z image.
.git*
**/*.pyc
.venv/
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í 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:
- Registr Azure kontejnerů
- Prostředí pro 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> a <location-info> jsou jedinečné pro 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 najdete v následujících zdrojích informací: