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:
Een Azure-account waar u een web-app kunt implementeren in Azure Container Apps. (Een Azure Container Registry en Log Analytics-werkruimte worden voor u gemaakt in het proces.)
Azure CLI, Docker en de Docker CLI die in uw lokale omgeving zijn geïnstalleerd.
De voorbeeldcode halen
Haal de code op in uw lokale omgeving.
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.
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.io
uit, 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 .
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: