Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa esercitazione illustra come inserire in contenitori un'app Web Python Flask o FastAPI e distribuirla in Azure Container Apps. Azure Container Apps usa Docker tecnologia contenitore per ospitare sia immagini predefinite che immagini personalizzate. Per altre informazioni sull'uso dei contenitori in Azure, vedere Impostazioni dei contenitori di Azure.
In questa esercitazione si usa l'interfaccia della riga di comando Docker e il Azure CLI per creare un'immagine Docker e distribuirla in Azure Container Apps. È anche possibile eseguire la distribuzione usando Visual Studio Code e l'estensione Azure Tools.
Prerequisiti
Per completare questa esercitazione, è necessario:
Un account Azure in cui è possibile distribuire un'app Web in Azure Container Apps. Il processo crea automaticamente un'area di lavoro Azure Container Registry e Log Analytics.
Azure CLI, Docker e Docker CLI installati nell'ambiente locale.
Scaricare il codice di esempio
Nell'ambiente locale, ottieni il codice.
Aggiungere file Dockerfile e dockerignore
Aggiungere un Dockerfile per indicare a Docker come compilare l'immagine. Il Dockerfile specifica l'uso di Gunicorn, un server Web a livello di produzione che inoltra le richieste Web ai framework Flask e FastAPI. I comandi ENTRYPOINT e CMD indicano a Gunicorn di gestire le richieste per l'oggetto app.
# 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"]
Questo esempio usa 50505 per la porta del contenitore (interna), ma è possibile usare qualsiasi porta libera.
Controllare il file requirements.txt per assicurarsi che contenga gunicorn.
Flask==3.1.0
gunicorn
Configurare gunicorn
È possibile configurare Gunicorn usando un file gunicorn.conf.py . Quando il file gunicorn.conf.py si trova nella stessa directory in cui si esegue gunicorn, non è necessario specificarne il percorso nell'istruzione ENTRYPOINT o CMD del Dockerfile. Per altre informazioni sulla specifica del file di configurazione, vedere Impostazioni di Gunicorn.
In questa esercitazione, il file di configurazione suggerito configura Gunicorn per aumentare il numero di worker in base al numero di core della CPU disponibili. Per altre informazioni sulle impostazioni dei file di gunicorn.conf.py , vedere Configurazione di 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
Aggiungere un file con estensione dockerignore per escludere i file non necessari dall'immagine.
.git*
**/*.pyc
.venv/
Compilare ed eseguire l'immagine in locale
Compilare l'immagine in locale.
Eseguire l'immagine localmente in un contenitore Docker.
docker run --detach --publish 5000:50505 flask-demo
Aprire http://localhost:5000 nel browser per visualizzare l'app Web in esecuzione in locale.
L'opzione --detach esegue il contenitore in background. L'opzione --publish esegue il mapping della porta del contenitore a una porta nell'host. La porta host (esterna) è la prima nella coppia e la porta del contenitore (interna) è la seconda. Per altre informazioni, vedere Informazioni di riferimento sull'esecuzione di Docker.
Distribuire un'app Web in Azure
Per distribuire l'immagine Docker in Azure Container Apps, usare il comando az containerapp up. I comandi seguenti vengono visualizzati per la shell Bash. Modificare il carattere di continuazione (\) in base alle esigenze di altre shell.
az containerapp up \
--resource-group web-flask-aca-rg --name web-aca-app \
--ingress external --target-port 50505 --source .
Quando la distribuzione è completata, disponi di un gruppo di risorse contenente le seguenti risorse:
- Un Azure Container Registry
- Un ambiente di applicazioni container
- Un'app Container che esegue l'immagine dell'app Web
- Un'area di lavoro Log Analytics
L'output del comando az containerapp up contiene l'URL per l'applicazione distribuita. Aprire l'URL nel browser per visualizzare l'app Web in esecuzione in Azure. L'URL è simile al seguente https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, dove <generated-text> e <location-info> sono unici per la tua distribuzione.
Apportare aggiornamenti e ridistribuire
Dopo aver apportato gli aggiornamenti del codice, eseguire di nuovo il comando precedente az containerapp up . Il comando ricompila l'immagine e la ridistribuisce in Azure Container Apps. Quando si esegue di nuovo il comando, rileva che il gruppo di risorse e l'app esistono già e aggiorna solo l'app contenitore.
Negli scenari di aggiornamento più complessi è possibile ridistribuire usando i comandi az acr build e az containerapp update insieme per aggiornare l'app contenitore.
Pulizia
Tutte le risorse Azure create in questa esercitazione si trovano nello stesso gruppo di risorse. La rimozione del gruppo di risorse rimuove tutte le risorse nel gruppo di risorse. È il modo più rapido per rimuovere tutte le risorse Azure usate per l'app.
Per rimuovere le risorse, usare il comando az group delete .
È anche possibile rimuovere il gruppo nel portale Azure o in Visual Studio Code usando l'estensione Azure Tools.
Passaggi successivi
Per altre informazioni, vedere le risorse seguenti: