Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
Een Azure-account waar u een web-app kunt implementeren in Azure Container Apps. (Het proces maakt een Azure Container Registry en Log Analytics werkruimte voor u.)
Azure CLI, Docker en de Docker CLI geïnstalleerd in uw lokale omgeving.
De voorbeeldcode ophalen
Haal de code op in uw lokale omgeving.
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.
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 .
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: