Delen via


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

In deze zelfstudie leert u hoe u een Python Flask - of FastAPI-web-app in een container kunt zetten en deze implementeert 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 zelfstudie gebruikt u de Docker CLI en de Azure CLI om een Docker-installatiekopieën te maken en deze te implementeren in Azure Container Apps. U kunt ook implementeren met Visual Studio Code en de Azure Tools-extensie.

Vereisten

U hebt het volgende nodig om deze zelfstudie te voltooien:

De voorbeeldcode halen

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 laten instrueren hoe u de installatiekopieën bouwt. 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", "app:app"]

50505 wordt in dit voorbeeld gebruikt voor de containerpoort (intern), maar u kunt elke gratis poort gebruiken.

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

Flask==2.2.2
gunicorn
Werkzeug==2.2.2

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

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

Gunicorn configureren

Gunicorn kan worden geconfigureerd met een gunicorn.conf.py bestand. Wanneer het gunicorn.conf.py bestand zich in dezelfde map bevindt als waar gunicorn het wordt uitgevoerd, 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 zelfstudie configureert het voorgestelde configuratiebestand GUnicorn om het aantal werkrollen 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

De installatiekopieën lokaal bouwen en uitvoeren

Bouw de installatiekopieën lokaal.

docker build --tag flask-demo .

Voer de installatiekopie lokaal uit in een Docker-container.

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

Open de http://localhost:5000 URL in uw browser om de web-app lokaal uit te voeren.

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 Naslaginformatie over Docker-uitvoering voor meer informatie.

Web-app implementeren in Azure

Als u de Docker-installatiekopieën wilt implementeren in Azure Container Apps, gebruikt u de opdracht az containerapp up . (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 waarop de installatiekopieën van de web-app worden uitgevoerd
  • Een Log Analytics-werkruimte

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

Updates maken en opnieuw implementeren

Nadat u code-updates hebt uitgevoerd, kunt u de vorige az containerapp up opdracht opnieuw uitvoeren, waarmee de installatiekopie opnieuw wordt opgebouwd en opnieuw wordt geïmplementeerd in Azure Container Apps. Als u de opdracht opnieuw uitvoert, houdt u rekening met het feit dat de resourcegroep en app al bestaan en werkt u alleen de container-app bij.

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

Opschonen

Alle Azure-resources die in deze zelfstudie zijn gemaakt, bevinden zich in dezelfde resourcegroep. Als u de resourcegroep verwijdert, worden alle resources in de resourcegroep verwijderd. Dit 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 Azure Portal of in Visual Studio Code en de Azure Tools-extensie.

Volgende stappen

Voor meer informatie raadpleegt u de volgende bronnen: