Condividi tramite


Panoramica delle app contenitore Python in Azure

Questo articolo illustra come accettare un progetto Python, ad esempio un'applicazione Web, e distribuirlo come contenitore Docker in Azure. Illustra il flusso di lavoro di containerizzazione generale, le opzioni di distribuzione di Azure per i contenitori e le configurazioni dei contenitori specifiche di Python all'interno di Azure. La compilazione e la distribuzione di contenitori Docker in Azure seguono un processo standard tra linguaggi, con configurazioni specifiche di Python nel Dockerfile, requirements.txte impostazioni per framework Web come Django, Flask e FastAPI.

Scenari del flusso di lavoro del contenitore

Per lo sviluppo di contenitori Python, alcuni flussi di lavoro tipici per lo spostamento dal codice al contenitore sono descritti nella tabella seguente.

Sceneggiatura Descrizione Flusso di lavoro
Dev Costruire immagini Docker Python localmente nell'ambiente di sviluppo. Codice: clonare il codice dell'app in locale usando Git (con Docker installato).

Compilazione: usare l'interfaccia della riga di comando di Docker, VS Code (con estensioni), PyCharm (con plug-in Docker). Descritto nella sezione Uso di immagini e contenitori Docker Python.

Test: eseguire e testare il contenitore in locale.

Push: eseguire il push dell'immagine in un registro contenitori, ad esempio Registro Azure Container, Hub Docker o registro privato.

Distribuire: distribuire il contenitore dal registro a un servizio di Azure.
Ibrido Compilare immagini Docker in Azure, ma avviare il processo dall'ambiente locale. Codice: clonare il codice in locale (non necessario per l'installazione di Docker).

Compilazione: per attivare compilazioni in Azure, usare VS Code (con estensioni remote) o l'interfaccia della riga di comando di Azure.

Push: eseguire il push dell'immagine creata nel registro Azure Container.

Distribuire: distribuire il contenitore dal registro a un servizio di Azure.
Azzurro Usare Azure Cloud Shell per creare e distribuire contenitori interamente nel cloud. Codice: Clonare il repository GitHub su Azure Cloud Shell.

Compilazione: usare l'interfaccia della riga di comando di Azure o l'interfaccia della riga di comando di Docker in Cloud Shell.

Push: eseguire il push dell'immagine in un registro, ad esempio Registro Azure Container, Hub Docker o registro privato.

Distribuire: distribuire il contenitore dal registro a un servizio di Azure.

L'obiettivo finale di questi flussi di lavoro è avere un contenitore in esecuzione in una delle risorse di Azure che supportano i contenitori Docker, come indicato nella sezione successiva.

Un ambiente di sviluppo può essere:

Opzioni del contenitore di distribuzione in Azure

Le app contenitore Python sono supportate nei servizi seguenti.

Servizio Descrizione
Applicazione Web per container Servizio app di Azure è una piattaforma di hosting completamente gestita per applicazioni Web in contenitori, inclusi siti Web e API Web. Supporta distribuzioni scalabili e si integra perfettamente con flussi di lavoro CI/CD usando Docker Hub, Registro Azure Container e GitHub. Questo servizio è ideale per gli sviluppatori che vogliono un percorso semplice ed efficiente per distribuire app in contenitori, sfruttando al contempo le funzionalità complete della piattaforma del servizio app di Azure. Con la creazione del pacchetto dell'applicazione e di tutte le relative dipendenze in un singolo contenitore distribuibile, è possibile ottenere sia la portabilità che la facilità di gestione, senza dover gestire l'infrastruttura.

Esempio: distribuire un'app Web Flask o FastPI nel servizio app di Azure.
App Azure Container (ACA) Azure Container Apps è un servizio di container serverless completamente gestito basato su Kubernetes e tecnologie open source come Dapr, KEDA e envoy. La progettazione incorpora le procedure consigliate del settore ed è ottimizzata per l'esecuzione di contenitori per utilizzo generico. ACA elimina la complessità della gestione di un'infrastruttura Kubernetes. L'accesso diretto all'API Kubernetes non è obbligatorio o supportato. Offre invece costrutti di applicazioni di livello superiore, ad esempio revisioni, scalabilità, certificati e ambienti per semplificare i flussi di lavoro di sviluppo e distribuzione. Questo servizio è ideale per i team di sviluppo che vogliono creare e distribuire microservizi in contenitori con un sovraccarico operativo minimo, consentendo loro di concentrarsi sulla logica dell'applicazione anziché sulla gestione dell'infrastruttura.

Esempio: distribuire un'app Web Flask o FastPI in App Contenitore di Azure.
istanze di Azure Container (ACI) Istanze di Azure Container è un'offerta serverless che offre un singolo pod di Hyper-V contenitori isolati su richiesta. La fatturazione è basata sul consumo effettivo delle risorse anziché sull'infrastruttura preallocata, che la rende particolarmente adatta per carichi di lavoro di breve durata o con picchi di attività. A differenza di altri servizi contenitore, ACI non include il supporto predefinito per concetti quali scalabilità, bilanciamento del carico o certificati TLS. In genere funziona come blocco predefinito di contenitori di base, spesso integrato con i servizi di Azure come il servizio Azure Kubernetes per l'orchestrazione. ACI è una scelta semplice quando le astrazioni e le funzionalità di livello superiore delle app Azure Container non sono necessarie

Esempio: Creare un'immagine del contenitore per la distribuzione in Istanze di Azure Container. L'esercitazione non è specifica di Python, ma i concetti illustrati si applicano a tutti i linguaggi.
Servizio Azure Kubernetes (AKS) Il servizio Azure Kubernetes è un'opzione Kubernetes completamente gestita in Azure che offre il controllo completo sull'ambiente Kubernetes. Supporta l'accesso diretto all'API Kubernetes e può eseguire qualsiasi carico di lavoro Kubernetes standard. Il cluster completo si trova nella sottoscrizione, con le configurazioni e le operazioni del cluster all'interno del controllo e della responsabilità. ACI è ideale per i team che cercano una soluzione di contenitori completamente gestita, mentre AKS offre il controllo completo sul cluster Kubernetes, richiedendo la gestione delle configurazioni, della rete, della scalabilità e delle operazioni. Azure gestisce il piano di controllo e il provisioning dell'infrastruttura, ma le operazioni quotidiane e la sicurezza del cluster sono all'interno del controllo del team. Questo servizio è ideale per i team che vogliono la flessibilità e la potenza di Kubernetes con il vantaggio aggiunto dell'infrastruttura gestita di Azure, mantenendo comunque la proprietà completa sull'ambiente del cluster.

Esempio: distribuire un cluster del servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure.
Funzioni di Azure Funzioni di Azure offre una piattaforma funzioni serverless e basate su eventi (FaaS) che consente di eseguire piccole parti di codice (funzioni) in risposta agli eventi, senza gestire l'infrastruttura. Azure Functions condivide molte caratteristiche con le app di Azure Container riguardo a scalabilità e integrazione con gli eventi, ma sono ottimizzate per funzioni di breve durata distribuite sotto forma di codice o contenitori. per i team che cercano di attivare l'esecuzione di funzioni in risposta agli eventi; ad esempio, per collegarsi ad altre fonti di dati. Analogamente ad Azure Container Apps, Azure Functions supporta il ridimensionamento automatico e l'integrazione con le origini eventi, come richieste HTTP, code di messaggi o aggiornamenti dell'archiviazione BLOB. Questo servizio è ideale per i team che creano flussi di lavoro leggeri e attivati da eventi, ad esempio l'elaborazione di caricamenti di file o la risposta alle modifiche del database, in Python o in altri linguaggi.

Esempio: creare una funzione in Linux usando un contenitore personalizzato.

Per un confronto più dettagliato di questi servizi, vedere Confronto tra app contenitore e altre opzioni del contenitore di Azure.

Ambienti virtuali e contenitori

Gli ambienti virtuali in Python isolano le dipendenze del progetto dalle installazioni Python a livello di sistema, garantendo la coerenza tra gli ambienti di sviluppo. Un ambiente virtuale include un proprio interprete Python isolato, insieme alle librerie e agli script necessari per eseguire il codice di progetto specifico all'interno di tale ambiente. Le dipendenze per i progetti Python vengono gestite tramite il file requirements.txt . Specificando le dipendenze in un file requirements.txt , gli sviluppatori possono riprodurre l'ambiente esatto necessario per il progetto. Questo approccio semplifica le transizioni più fluide alle distribuzioni in contenitori, ad esempio servizio app di Azure, in cui la coerenza dell'ambiente è essenziale per prestazioni affidabili delle applicazioni.

Suggerimento

Nei progetti Python in contenitori, gli ambienti virtuali in genere non sono necessari perché i contenitori Docker forniscono ambienti isolati con i propri interpreti Python e dipendenze. Tuttavia, è possibile usare ambienti virtuali per lo sviluppo o il test locale. Per mantenere snelle le immagini Docker, escludere gli ambienti virtuali usando un file .dockerignore, che impedisce la copia di file non necessari nell'immagine.

È possibile considerare i contenitori Docker come funzionalità simili agli ambienti virtuali Python, ma con vantaggi più ampi in termini di riproducibilità, isolamento e portabilità. A differenza degli ambienti virtuali, i contenitori Docker possono essere eseguiti in modo coerente in diversi sistemi operativi e ambienti, purché sia disponibile un runtime di contenitori.

Un contenitore Docker include il codice del progetto Python insieme a tutto ciò che deve essere eseguito, ad esempio dipendenze, impostazioni di ambiente e librerie di sistema. Per creare un contenitore, compilare prima un'immagine Docker dal codice e dalla configurazione del progetto e quindi avviare un contenitore, ovvero un'istanza eseguibile di tale immagine.

Per la containerizzazione dei progetti Python, i file chiave sono descritti nella tabella seguente:

File di progetto Descrizione
requirements.txt Questo file contiene l'elenco definitivo delle dipendenze Python necessarie per l'applicazione. Docker usa questo elenco durante il processo di compilazione delle immagini per installare tutti i pacchetti necessari. In questo modo si garantisce la coerenza tra gli ambienti di sviluppo e distribuzione.
Dockerfile Questo file contiene istruzioni per la compilazione dell'immagine Docker Python, tra cui la selezione dell'immagine di base, l'installazione delle dipendenze, la copia del codice e i comandi di avvio del contenitore. Definisce l'ambiente di esecuzione completo per l'applicazione. Per altre informazioni, vedere la sezione Istruzioni di Dockerfile per Python.
.dockerignore Questo file specifica i file e le directory che devono essere esclusi durante la copia del contenuto nell'immagine Docker con il COPY comando nel Dockerfile. Questo file usa modelli simili a .gitignore per definire le esclusioni. Il file con estensione dockerignore supporta modelli di esclusione simili ai file con estensione gitignore . Per altre informazioni, vedere file .dockerignore.

L'esclusione dei file consente di migliorare le prestazioni di compilazione delle immagini, ma deve essere usata anche per evitare di aggiungere informazioni riservate all'immagine in cui è possibile esaminarla. Ad esempio, .dockerignore deve contenere righe per ignorare .env e .venv (ambienti virtuali).

Impostazioni del contenitore per framework Web

I framework Web in genere si associano alle porte predefinite (ad esempio 5000 per Flask, 8000 per FastAPI). Quando si distribuiscono contenitori nei servizi di Azure, ad esempio Istanze di Azure Container, servizio Azure Kubernetes o servizio app per contenitori, è fondamentale esporre e configurare in modo esplicito la porta di ascolto del contenitore per garantire il routing appropriato del traffico in ingresso. La configurazione della porta corretta garantisce che l'infrastruttura di Azure possa indirizzare le richieste all'endpoint corretto all'interno del contenitore.

Framework Web Porto
Django 8.000
Beuta 5000 o 5002
FastAPI (uvicorn) 8000 o 80

La tabella seguente illustra come impostare la porta per diverse soluzioni contenitore di Azure.

Soluzione contenitore di Azure Come impostare la porta dell'app Web
Applicazione Web per container Per impostazione predefinita, il servizio app presuppone che il contenitore personalizzato sia in ascolto sulla porta 80 o sulla porta 8080. Se il contenitore è in ascolto su una porta diversa, configurare l'impostazione dell'app WEBSITES_PORT nel servizio app. Per altre informazioni, vedere Configurare un contenitore personalizzato per il servizio app di Azure.
App per contenitori di Azure App Azure Container consente di esporre l'app contenitore al Web pubblico, alla rete virtuale o ad altre app contenitore all'interno dello stesso ambiente abilitando l'ingresso. Impostare l'ingresso targetPort sulla porta su cui il contenitore è in ascolto per le richieste in ingresso. L'endpoint di ingresso dell'applicazione viene sempre esposto sulla porta 443. Per altre informazioni, vedere Configurare l'ingresso HTTPS o TCP nelle app contenitore di Azure.
Istanze di Azure Container, Azure Kubernetes Definire la porta in cui l'app è in ascolto durante la creazione di contenitori o pod. L'immagine del contenitore deve includere un framework Web, un server applicazioni (ad esempio gunicorn, uvicorn) e facoltativamente un server Web (ad esempio, nginx). In scenari più complessi, è possibile suddividere le responsabilità tra due contenitori, uno per il server applicazioni e un altro per il server Web. In tal caso, il contenitore del server Web espone in genere le porte 80 o 443 per il traffico esterno.

Python Dockerfile

Un Dockerfile è un file di testo che contiene istruzioni per la compilazione di un'immagine Docker per un'applicazione Python. La prima istruzione specifica in genere l'immagine di base da cui iniziare. Le istruzioni successive illustrano quindi in dettaglio le azioni come l'installazione del software necessario, la copia dei file dell'applicazione e la configurazione dell'ambiente per creare un'immagine eseguibile. La tabella seguente fornisce esempi specifici di Python per istruzioni Dockerfile di uso comune.

Istruzione Scopo Esempio
DA Imposta l'immagine di base per le istruzioni successive. FROM python:3.8-slim
ESPORRE Indica a Docker che il contenitore è in ascolto di una porta specificata in fase di esecuzione. EXPOSE 5000
COPIARE Copia file o directory dall'origine specificata e li aggiunge al file system del contenitore nel percorso di destinazione specificato. COPY . /app
CORRERE Esegue un comando all'interno dell'immagine Docker. Ad esempio, eseguire il pull delle dipendenze. Il comando viene eseguito una sola volta in fase di compilazione. RUN python -m pip install -r requirements.txt
CMD Il comando fornisce l'impostazione predefinita per l'esecuzione di un contenitore. Può essere presente una sola istruzione CMD. CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

Il comando di compilazione Docker compila immagini Docker da un Dockerfile e da un contesto. Il contesto di una compilazione è il set di file che si trovano nel percorso o nell'URL specificato. In genere, si compila un'immagine dalla radice del progetto Python e il percorso del comando di compilazione è ".", come illustrato nell'esempio seguente.

docker build --rm --pull  --file "Dockerfile"  --tag "mywebapp:latest"  .

Il processo di compilazione può fare riferimento a uno qualsiasi dei file nel contesto. Ad esempio, la compilazione può usare un'istruzione COPY per fare riferimento a un file nel contesto. Ecco un esempio di Dockerfile per un progetto Python usando il framework Flask :

FROM python:3.8-slim

EXPOSE 5000

# Keeps Python from generating .pyc files in the container.
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements.
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder.
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

# Provides defaults for an executing container; can be overridden with Docker CLI.
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

È possibile creare un Dockerfile a mano o crearlo automaticamente con VS Code e l'estensione Docker. Per altre informazioni, vedere Generazione di file Docker.

Il comando di compilazione Docker fa parte dell'interfaccia della riga di comando di Docker. Quando si usano IDE come VS Code o PyCharm, i comandi dell'interfaccia utente per l'uso delle immagini Docker chiamano automaticamente il comando di compilazione e automatizzano la specifica delle opzioni.

Lavorare con immagini e container Docker Python

VS Code e PyCharm

Gli ambienti di sviluppo integrato (IDE) come Visual Studio Code (VS Code) e PyCharm semplificano lo sviluppo di contenitori Python integrando le attività Docker nel flusso di lavoro. Con estensioni o plug-in, questi IDE semplificano la compilazione di immagini Docker, l'esecuzione di contenitori e la distribuzione in servizi di Azure come il servizio app o istanze di Contenitore. Ecco alcune delle operazioni che è possibile eseguire con VS Code e PyCharm.

  • Scaricare e compilare immagini Docker.

    • Creare immagini nell'ambiente di sviluppo.
    • Compilare immagini Docker in Azure senza Docker installato nell'ambiente di sviluppo. Per PyCharm, usare l'interfaccia della riga di comando di Azure per compilare immagini in Azure.
  • Creare ed eseguire contenitori Docker da un'immagine esistente, un'immagine estratta o direttamente da un Dockerfile.

  • Eseguire applicazioni multicontainer con Docker Compose.

  • Connettersi e usare registri contenitori come Docker Hub, GitLab, JetBrains Space, Docker V2 e altri registri Docker self-hosted.

  • (solo VS Code) Aggiungere file Dockerfile e Docker compose personalizzati per il progetto Python.

Per configurare VS Code e PyCharm per eseguire contenitori Docker nell'ambiente di sviluppo, seguire questa procedura.

Se non è già stato fatto, installare Azure Tools per VS Code.

Disposizioni Istantanea dello schermo
Passaggio 1: usare MAIUSC + ALT + A per aprire l'estensione Azure e verificare di essere connessi ad Azure.

È anche possibile selezionare l'icona di Azure sulla barra delle estensioni di VS Code.

Se non si è connessi, selezionare Accedi ad Azure e seguire le istruzioni.

Se si verificano problemi di accesso alla sottoscrizione di Azure, potrebbe essere dovuto al fatto che si è dietro un proxy. Per risolvere i problemi di connessione, vedere Connessioni di rete in Visual Studio Code.
Screenshot che mostra come appare Strumenti di Azure dopo l'accesso. Screenshot che mostra come appare Strumenti di Azure se non è stato eseguito l'accesso.
Passaggio 2: usare CTRL + MAIUSC + X per aprire Estensioni, cercare l'estensione Docker e installare l'estensione.

È anche possibile selezionare l'icona Estensioni sulla barra delle estensioni di VS Code.
Screenshot che mostra come aggiungere l'estensione Docker a VS Code.
Passaggio 3: Selezionare l'icona Docker nella barra dell'estensione, espandere le immagini e fare clic con il pulsante destro del mouse su un'immagine Docker eseguirla come contenitore. Screenshot che mostra come usare l'estensione Docker in VS Code per eseguire un contenitore da un'immagine Docker.
Passaggio 4: Monitorare l'output dell'esecuzione di Docker nella finestra Del terminale . Screenshot che mostra un esempio di esecuzione di un contenitore in VS Code.

Interfaccia della riga di comando di Azure e interfaccia della riga di comando di Docker

È anche possibile usare immagini e contenitori Docker Python usando l'interfaccia della riga di comando di Azure e l'interfaccia della riga di comando di Docker. Sia VS Code che PyCharm hanno terminali in cui è possibile eseguire queste interfacce di riga.

Usare un CLI quando si desidera un maggiore controllo sugli argomenti di compilazione ed esecuzione e per l'automazione. Ad esempio, il comando seguente illustra come usare l'interfaccia della riga di comando di Azure az acr build per specificare il nome dell'immagine Docker.

az acr build --registry <registry-name> \
  --resource-group <resource-group> \
  --target pythoncontainerwebapp:latest .

Come altro esempio, si consideri il seguente comando che illustra come usare il comando run della Docker CLI. L'esempio illustra come eseguire un contenitore Docker che comunica con un'istanza di MongoDB nell'ambiente di sviluppo, all'esterno del contenitore. I diversi valori per completare il comando sono più facili da automatizzare quando specificati in una riga di comando.

docker run --rm -it \
  --publish <port>:<port> --publish 27017:27017 \
  --add-host mongoservice:<your-server-IP-address> \
  --env CONNECTION_STRING=mongodb://mongoservice:27017 \
  --env DB_NAME=<database-name> \
  --env COLLECTION_NAME=<collection-name> \
  containermongo:latest  

Per altre informazioni su questo scenario, vedere Compilare e testare un'app Web Python in contenitori in locale.

Variabili di ambiente nei contenitori

I progetti Python usano in genere variabili di ambiente per passare i dati di configurazione nel codice dell'applicazione. Questo approccio consente una maggiore flessibilità in ambienti diversi. Ad esempio, i dettagli della connessione al database possono essere archiviati nelle variabili di ambiente, semplificando il passaggio tra database di sviluppo, test e produzione senza modificare il codice. Questa separazione della configurazione dal codice promuove distribuzioni più pulite e migliora la sicurezza e la gestibilità.

I pacchetti come python-dotenv vengono spesso usati per leggere coppie chiave-valore da un file con estensione env e impostarle come variabili di ambiente. Un file con estensione env è utile quando viene eseguito in un ambiente virtuale, ma non è consigliabile quando si usano i contenitori. Non copiare il file con estensione env nell'immagine Docker, soprattutto se contiene informazioni riservate e il contenitore verrà reso pubblico. Usare il file con estensione dockerignore per escludere la copia dei file nell'immagine Docker. Per altre informazioni, vedere la sezione Ambienti virtuali e contenitori in questo articolo.

È possibile passare variabili di ambiente ai contenitori in diversi modi:

  1. Definito nel Dockerfile come istruzioni di ENV .
  2. Passato come --build-arg argomenti nel comando Docker build.
  3. Passati come --secret argomenti durante il comando di compilazione Docker e il back-end BuildKit.
  4. Passato come argomenti --env e --env-file con il comando Docker run.

Le prime due opzioni presentano lo stesso svantaggio dei file .env, ovvero che stai codificando direttamente delle informazioni potenzialmente sensibili in un'immagine Docker. È possibile esaminare un'immagine Docker e visualizzare le variabili di ambiente, ad esempio, con il comando docker image inspect.

La terza opzione con BuildKit consente di passare informazioni segrete da usare nel Dockerfile per la compilazione di immagini Docker in modo sicuro che non finiranno archiviate nell'immagine finale.

La quarta opzione di passaggio delle variabili di ambiente con il comando Docker run indica che l'immagine Docker non contiene le variabili. Tuttavia, le variabili sono ancora visibili esaminando l'istanza del contenitore, ad esempio con docker container inspect. Questa opzione può essere accettabile quando l'accesso all'istanza del contenitore è controllato o in scenari di test o sviluppo.

Di seguito è riportato un esempio di passaggio di variabili di ambiente utilizzando il comando run di Docker CLI e l'argomento --env.

# PORT=8000 for Django and 5000 for Flask
export PORT=<port-number>

docker run --rm -it \
  --publish $PORT:$PORT \
  --env CONNECTION_STRING=<connection-info> \
  --env DB_NAME=<database-name> \
  <dockerimagename:tag>

In VS Code (estensione Docker) o PyCharm (plug-in Docker), gli strumenti dell'interfaccia utente semplificano la gestione di immagini e contenitori Docker eseguendo comandi standard dell'interfaccia della riga di comando docker (ad esempio docker build, docker run) in background.

Infine, la specifica delle variabili di ambiente durante la distribuzione di un contenitore in Azure è diversa dall'uso di variabili di ambiente nell'ambiente di sviluppo. Per esempio:

  • Per Web App per container, configuri le impostazioni dell'applicazione durante la configurazione di App Service. Queste impostazioni sono disponibili per il codice dell'app come variabili di ambiente e vengono accessate usando il modello standard os.environ. È possibile modificare i valori dopo la distribuzione iniziale quando necessario. Per altre informazioni, vedere Accedere alle impostazioni dell'app come variabili di ambiente.

  • Per le app contenitore di Azure, è possibile configurare le variabili di ambiente durante la configurazione iniziale dell'app contenitore. La modifica successiva delle variabili di ambiente crea una revisione del contenitore. Inoltre, App Azure Container consente di definire segreti a livello di applicazione e quindi farvi riferimento nelle variabili di ambiente. Per altre informazioni, vedere Gestire i segreti in App Azure Container.

Un'altra opzione consente di usare Service Connector per connettere i servizi di calcolo di Azure ad altri servizi di backup. Questo servizio configura le impostazioni di rete e le informazioni di connessione (ad esempio, generando variabili di ambiente) tra i servizi di calcolo e i servizi di backup di destinazione nel piano di gestione.

Visualizzazione dei log dei contenitori

Guarda i log dell'istanza del contenitore per identificare i messaggi diagnostici dal codice e risolvere eventuali problemi nel codice del contenitore. Ecco diversi modi per visualizzare i log quando si esegue un contenitore nell'ambiente di sviluppo:

  • Eseguendo un contenitore con VS Code o PyCharm, come illustrato nella sezione VS Code e PyCharm, puoi vedere i log nelle finestre del terminale aperte quando Docker viene eseguito.

  • Se stai usando il comando run della CLI di Docker con il flag interattivo-it, vedrai l'output che segue il comando.

  • In Docker Desktop è anche possibile visualizzare i log per un contenitore in esecuzione.

Quando si distribuisce un contenitore in Azure, è anche possibile accedere ai log dei contenitori. Ecco diversi servizi di Azure e come accedere ai log dei contenitori nel portale di Azure.

Servizio di Azure Come accedere ai log nel portale di Azure
Applicazione Web per container Passare alla risorsa Diagnostica e risoluzione dei problemi per visualizzare i log. La diagnostica è un'esperienza intelligente e interattiva che consente di risolvere i problemi dell'app senza alcuna configurazione necessaria. Per una visualizzazione in tempo reale dei log, passare al monitoraggio - stream di log. Per informazioni più dettagliate sulle query di log e sulla configurazione, vedere le altre risorse in Monitoraggio.
App container di Azure Vai alla risorsa Diagnosticare e risolvere i problemi per risolvere i problemi dell'ambiente. Più spesso si vogliono visualizzare i log dei contenitori. Nella risorsa contenitore, sotto Applicazione - Gestione revisione, selezionare la revisione e da lì si possono visualizzare i log di sistema e console. Per query e configurazione di log più dettagliate, vedere le risorse in Monitoraggio.
Istanze di Azure Container Passare alla risorsa Contenitori e selezionare Log.

Per questi servizi, ecco i comandi dell'interfaccia della riga di comando di Azure per accedere ai log.

Servizio di Azure Comando dell'interfaccia della riga di comando di Azure per accedere ai log
Applicazione Web per container az webapp log
App container di Azure az containerapps logs
Istanze di Azure Container az container logs

È disponibile anche il supporto per la visualizzazione dei log in VS Code. È necessario aver installato Strumenti di Azure per VS Code . Di seguito è riportato un esempio di visualizzazione dei log di App Web per contenitori (servizio app) in VS Code.

Screenshot che mostra come visualizzare i log in VS Code per Web Apps per i container.

Passaggi successivi