Scegliere un flusso di lavoro di compilazione e distribuzione del contenitore

Azure Developer CLI (azd) può compilare, pubblicare e distribuire immagini di contenitori tra diversi servizi di hosting di Azure. Un flusso di lavoro del contenitore combina una destinazione di hosting con un percorso di compilazione e un approccio di pubblicazione. La combinazione migliore dipende dall'applicazione, dagli strumenti disponibili dal team e dalla modalità di promozione delle immagini tra ambienti.

Usa questo articolo per abbinare queste opzioni alle tue esigenze. Confronta le decisioni seguenti:

  • Quale servizio Azure ospita il contenitore.
  • Se azd compila l'immagine in locale, la compila in remoto in Registro Azure Container (ACR) o usa un'immagine esistente.
  • Se azd pubblica e distribuisce l'immagine insieme o come passaggi separati.

L'articolo confronta questi servizi di hosting per utilizzo generico:

Per iniziare, confrontare le destinazioni di hosting e le opzioni di compilazione delle immagini. Dopo aver compreso queste scelte, usarle per identificare un flusso di lavoro candidato nella sezione Confrontare i flussi di lavoro di distribuzione dei contenitori .

Confrontare le destinazioni di hosting dei contenitori

La host proprietà in azure.yaml identifica il servizio Azure in cui azd viene distribuito il contenitore. Scegliere l'host indipendentemente dalla posizione di compilazione dell'immagine.

Valore dell'host Destinazione di hosting Azure Flusso di lavoro del contenitore Considerazioni
containerapp App contenitore di Azure e processi di Container Apps Esegui la build da un progetto e un Dockerfile oppure distribuisci un'immagine precompilata. Supporta le variabili di ambiente a livello di servizio e le strategie di distribuzione specifiche di App contenitore. Usare lo stesso valore host per i processi di Container Apps.
appservice App Web Linux per contenitori in Servizio app di Azure Esegui la build da un progetto e un Dockerfile oppure distribuisci un'immagine pregenerata. L'infrastruttura deve eseguire il provisioning di un sito abilitato per contenitori Linux e configurare l'accesso ad ACR tramite identità gestita. azd deploy aggiorna solo il riferimento all'immagine.
aks Servizio Azure Kubernetes Creare un'immagine e distribuire manifesti Kubernetes, grafici Helm o configurazioni Kustomize. Fornisce il maggior controllo, ma richiede la gestione del cluster e della configurazione di Kubernetes. L'uso di Helm o Kustomize con azd richiede l'abilitazione dei flag di funzionalità alfa.

Gli ai.endpoint host e azure.ai.agent supportano anche la configurazione di Docker per scenari specializzati Microsoft Foundry. Per questi carichi di lavoro, vedere Distribuire negli endpoint online di Microsoft Foundry e l'estensione agente di Microsoft Foundry.

Confrontare le opzioni di compilazione delle immagini

La definizione del servizio determina se azd compila un'immagine o inizia con un'immagine esistente.

Opzione di creazione Configurazione richiesta Posizione in cui viene eseguita la compilazione Motore contenitore locale Ideale per
Compilazione locale project e, facoltativamente, docker Il tuo ambiente di sviluppo o runner CI Obbligatorio Iterazioni di sviluppo veloci e ambienti di compilazione che forniscono già Docker o Podman.
Compilazione remota di ACR project e docker.remoteBuild: true Registro dei container di Azure Non richiesto, a meno che azd non passi alla modalità di fallback dopo un errore di build remota Compilazioni e ambienti cloud coerenti senza un motore contenitore locale. Il flusso di lavoro di compilazione remota documentato è destinato ad App contenitore di Azure.
Immagine esistente gestita da azd image Nessuna build di origine Potrebbe essere necessario per le operazioni del ciclo di vita delle immagini Immagini che esistono già in locale o in un registro e che azd può scaricare, etichettare e caricare.
Trasferimento diretto dell'immagine remota image e docker.imagePassthrough: true Nessuna compilazione Non obbligatorio Immagini remote completamente qualificate che la risorsa ospitante deve usare così come sono.

Tenere presenti queste differenze concettuali quando si leggono gli articoli di configurazione per opzione:

  • Un'immagine predefinita usa la image proprietà invece di projecte azd può comunque eseguire il pull, il tag e il push.
  • Una compilazione remota di ACR ripiega su una compilazione locale con Docker o Podman quando la compilazione remota non riesce ed è disponibile un motore per contenitori supportato.
  • Il passaggio diretto dell'immagine richiede un riferimento completo e qualificato all'immagine remota che includa un registro, non può essere combinato con remoteBuild e non supporta le opzioni azd publish --from-package o azd publish --to perché azd non gestisce l'immagine.

Per la configurazione completa di ogni opzione, vedere Supporto delle compilazioni remote con Registro Azure Container, Usare registri contenitori di terze parti, distribuzioni di contenitori del servizio app con l'interfaccia della riga di comando di Azure Developer e lodocker schema.

Confrontare i flussi di lavoro di distribuzione dei contenitori

Dopo aver confrontato le destinazioni di hosting in Confrontare le destinazioni di hosting dei contenitori e le opzioni di compilazione in Confrontare le opzioni di compilazione delle immagini, usare la tabella seguente per identificare i flussi di lavoro più probabili per le proprie esigenze.

Se ne hai bisogno Avvia con Perché
Distribuire un'applicazione in contenitori in una piattaforma serverless App contenitore di Azure con una compilazione locale Questo flusso di lavoro compila e distribuisce un progetto basato su Dockerfile in un unico flusso di lavoro di sviluppo.
Compilare senza installare Docker o Podman in locale App contenitore di Azure con una compilazione remota di ACR ACR crea l'immagine a partire dal progetto e dal Dockerfile in Azure.
Distribuire un'immagine che un altro sistema di compilazione produce App contenitore di Azure o App Service con un'immagine precompilata La image proprietà identifica l'immagine esistente anziché il codice sorgente da compilare.
Riutilizzare un'immagine remota senza eseguire il pull, l'assegnazione di tag o il push App contenitore di Azure con pass-through immagine azd trasmette direttamente alla risorsa di hosting il riferimento completo e qualificato dell'immagine.
Ospitare un'applicazione Web tradizionale come contenitore Linux App Web per contenitori in Servizio app di Azure App Service offre una piattaforma integrata di hosting Web, mentre l'infrastruttura gestisce la configurazione del sito predisposta per i contenitori.
Controllare i manifesti e la configurazione del cluster Kubernetes Il servizio Azure Kubernetes (AKS) azd può compilare e pubblicare l'immagine, quindi distribuire manifesti Kubernetes, grafici Helm o configurazioni Kustomize.
Creare una volta sola e promuovere la stessa immagine attraverso gli ambienti azd publish, seguito da azd deploy --from-package La pubblicazione e la distribuzione sono separate, quindi ogni ambiente riceve la stessa immagine.

Ogni riga combina le opzioni di hosting di Confrontare le destinazioni di hosting per i contenitori e le opzioni di compilazione di Confrontare le opzioni di compilazione delle immagini in un punto di partenza. Configura la tua scelta in azure.yaml e lascia che i file Bicep o Terraform eseguano il provisioning delle corrispondenti risorse di hosting e del registro.

Una definizione minima del servizio imposta host, la sorgente della build e il Dockerfile:

services:
  api:
    project: ./src/api
    language: docker
    host: containerapp
    docker:
      path: ./Dockerfile

Per adattare questa definizione a un altro host, modificare il host valore e seguire il contratto di configurazione per host:

Confrontare i comandi di pubblicazione e distribuzione

Dopo aver scelto un host e un'opzione di compilazione, selezionare se combinare o separare la pubblicazione e la distribuzione di immagini.

Comando Azioni per l'immagine azione della risorsa di Azure Usa quando
azd up Compilare ed eseguire il push Effettuare il provisioning e la distribuzione Si vuole creare o aggiornare l'ambiente completo e distribuire l'applicazione in un unico flusso di lavoro.
azd deploy Compilare ed eseguire il push Distribuire L'infrastruttura esiste già e si vuole distribuire le modifiche dell'applicazione.
azd publish Compilare ed eseguire il push Nessuno Si vuole creare un artefatto del Registro di sistema senza distribuirlo. azd publish supporta Container Apps e i servizi AKS.
azd publish --from-package <image> Eseguire il push di un'immagine locale esistente Nessuno Un altro processo ha generato l'immagine e vuoi che azd la pubblichi.
azd deploy --from-package <image> Nessuno Distribuire Vuoi distribuire un'immagine specifica senza ricrearla.

Ad esempio, pubblicare un'immagine con controllo delle versioni e distribuire la stessa immagine in un altro ambiente:

azd publish api --to myregistry.azurecr.io/my-api:v1.0.0
azd env select production
azd deploy api --from-package myregistry.azurecr.io/my-api:v1.0.0

Questo flusso di lavoro impedisce le differenze che possono verificarsi quando si ricompila un'immagine per ogni ambiente. Per un flusso di lavoro di promozione completo, vedere flussi di lavoro di pubblicazione dell'interfaccia della riga di comando per sviluppatori Azure.