Delen via


Een Flask- of FastAPI-web-app implementeren op Azure Container Apps

In deze zelfstudie leert u hoe u een Python Flask of FastAPI-web-app in een container kunt opslaan en deze kunt implementeren in Azure Container Apps. Azure Container Apps maakt gebruik van Docker containertechnologie om zowel ingebouwde installatiekopieën als aangepaste installatiekopieën te hosten. Zie Azure containeropties vergelijken voor meer informatie over het gebruik van containers in Azure.

In deze handleiding gebruikt u de Docker CLI en de Azure CLI om een Docker-image te maken en deze te implementeren in Azure Container Apps. U kunt ook implementeren met behulp van Visual Studio Code en de extensie Azure Tools.

Voorwaarden

U hebt het volgende nodig om deze zelfstudie te voltooien:

De voorbeeldcode ophalen

Haal de code op in uw lokale omgeving.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git

Dockerfile- en .dockerignore-bestanden toevoegen

Voeg een Dockerfile toe om Docker te instrueren hoe de afbeelding te bouwen. Het Dockerfile specificeert het gebruik van Gunicorn, een webserver op productieniveau die webaanvragen doorstuurt naar de Flask- en FastAPI-frameworks. Met de OPDRACHTEN ENTRYPOINT en CMD wordt Gunicorn geïnstrueerd om aanvragen voor het app-object te verwerken.

# 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"]

In dit voorbeeld wordt gebruikgemaakt 50505 van de containerpoort (intern), maar u kunt elke gratis poort gebruiken.

Controleer het requirements.txt bestand om er zeker van te zijn dat het bestand bevat gunicorn.

Flask==3.1.0
gunicorn

Gunicorn configureren

U kunt Gunicorn configureren met behulp van een gunicorn.conf.py-bestand . Wanneer het bestand gunicorn.conf.py zich in dezelfde map bevindt als waarop u uitvoert gunicorn, hoeft u de locatie niet op te geven in de ENTRYPOINT of CMD instructie van het Dockerfile. Zie Gunicorn-instellingen voor meer informatie over het opgeven van het configuratiebestand.

In deze handleiding configureert het voorgestelde configuratiebestand Gunicorn om het aantal workers te verhogen op basis van het aantal beschikbare CPU-kernen. Zie Gunicorn-configuratie voor meer informatie over gunicorn.conf.py bestandsinstellingen.

# 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

Voeg een .dockerignore-bestand toe om overbodige bestanden uit de installatiekopie uit te sluiten.

.git*
**/*.pyc
.venv/

Bouw en voer de image lokaal uit

Maak de image lokaal.

docker build --tag flask-demo .

Voer de image lokaal uit in een Docker-container.

docker run --detach --publish 5000:50505 flask-demo

Open http://localhost:5000 in uw browser om te zien dat de web-app lokaal wordt uitgevoerd.

Met --detach de optie wordt de container op de achtergrond uitgevoerd. De --publish optie wijst de containerpoort toe aan een poort op de host. De hostpoort (extern) bevindt zich eerst in het paar en de containerpoort (intern) is tweede. Zie Docker run referentie voor meer informatie.

Web-app implementeren in Azure

Gebruik de opdracht az containerapp up om de Docker-images te implementeren in Azure Container Apps. (De volgende opdrachten worden weergegeven voor de Bash-shell. Wijzig het vervolgteken (\) indien van toepassing op andere shells.)

az containerapp up \
  --resource-group web-flask-aca-rg --name web-aca-app \
  --ingress external --target-port 50505 --source .

Wanneer de implementatie is voltooid, hebt u een resourcegroep met de volgende resources erin:

  • Een Azure Container Registry
  • Een Container Apps-omgeving
  • Een container-app die de image van de web-app draait
  • Een Log Analytics werkruimte

De uitvoer van de az containerapp up opdracht bevat de URL voor de geïmplementeerde app. Open de URL in uw browser om de web-app te zien die wordt uitgevoerd in Azure. De URL ziet er als volgt https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.iouit, waarbij de <generated-text> en <location-info> uniek zijn voor uw implementatie.

Updates maken en opnieuw implementeren

Nadat u code-updates hebt uitgevoerd, voert u de vorige az containerapp up opdracht opnieuw uit. Met het commando wordt het beeld opnieuw opgebouwd en opnieuw ingezet in Azure Container Apps. Wanneer u de opdracht opnieuw uitvoert, wordt gedetecteerd dat de resourcegroep en app al bestaan en wordt alleen de container-app bijgewerkt.

In complexere updatescenario's kunt u opnieuw implementeren met behulp van de opdrachten az acr build en az containerapp update om de container-app bij te werken.

Opschonen

Alle Azure resources die u in deze zelfstudie hebt gemaakt, bevinden zich in dezelfde resourcegroep. Als u de resourcegroep verwijdert, worden alle resources in de resourcegroep verwijderd. Het is de snelste manier om alle Azure resources te verwijderen die voor uw app worden gebruikt.

Als u resources wilt verwijderen, gebruikt u de opdracht az group delete .

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

U kunt de groep ook verwijderen in de Azure portal of in Visual Studio Code met behulp van de Azure Tools Extension.

Volgende stappen

Zie de volgende bronnen voor meer informatie: