Sdílet prostřednictvím


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:

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

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ě.

docker build --tag flask-demo .

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 .

az group delete --name web-flask-aca-rg

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: