Usare Docker YAML per compilare ed eseguire il push di immagini Docker in Registro Azure Container
Servizi di Azure DevOps
Questa esercitazione illustra come usare una pipeline basata su un modello Docker di Azure Pipelines per compilare un'applicazione in contenitori ed eseguirne il push in Registro Azure Container. Il modello configura una pipeline YAML di integrazione continua in cui il nuovo repository di codice modifica attiva la pipeline per compilare e pubblicare immagini Docker aggiornate nel Registro di sistema.
La pipeline del modello di contenitore Docker usa agenti ospitati da Microsoft e crea una connessione al servizio basata su entità servizio per Registro Azure Container. Per una pipeline che esegue un processo simile usando agenti self-hosted e una connessione al servizio creata manualmente, vedere Creare ed eseguire il push di immagini Docker in Registro Azure Container.
Prerequisiti
Un account Azure in cui si dispone dell'autorizzazione per creare e configurare le risorse. Se non si ha un account Azure, iscriversi per ottenere un account gratuito.
Un'organizzazione e un progetto di Azure DevOps in cui si dispone dell'autorizzazione per creare pipeline e distribuire app. Per creare un'organizzazione o un progetto, vedere Creare una nuova organizzazione o Creare un progetto in Azure DevOps.
Un account GitHub.
Importante
Quando si usa GitHub nelle procedure seguenti, potrebbe essere richiesto di creare una connessione al servizio GitHub, accedere a GitHub, eseguire l'autenticazione alle organizzazioni GitHub, installare Azure Pipelines o autorizzare Azure Pipelines. Seguire le istruzioni visualizzate per completare il processo. Per altre informazioni, vedere Accedere ai repository GitHub.
Ottenere l'app di esempio
In GitHub creare una copia tramite fork o clonare il repository di app Docker e Kubernetes di esempio Node.JS.
Creare un registro contenitori
Dalla portale di Azure accedere ad Azure Cloud Shell selezionando l'icona nella barra dei menu in alto. Assicurarsi di usare la shell Bash .
In Cloud Shell eseguire i comandi seguenti per creare un gruppo di risorse e un Registro Azure Container usando l'interfaccia della riga di comando di Azure. Il nome del Registro Container deve essere minuscolo.
az group create --name myapp-rg --location eastus az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
Per distribuire un'immagine Docker nel Registro Azure Container, è necessario abilitare l'account utente amministratore per il Registro di sistema, disabilitato per impostazione predefinita. Per abilitare l'utente amministratore per il Registro di sistema, usare il
--admin-enabled
parametro con ilaz acr update
comando . Per altre informazioni e istruzioni, vedere Account amministratore.az acr update -n <acrName> --admin-enabled true
In alternativa, è possibile usare l'interfaccia utente portale di Azure per creare il registro Azure Container. Per istruzioni, vedere Creare un registro contenitori. Abilitare l'account amministratore in Proprietà dopo aver creato il Registro di sistema.
Creare la pipeline
Nel progetto Azure DevOps selezionare Pipeline>nuova pipeline o Crea pipeline se la pipeline è la prima nel progetto.
Selezionare GitHub come percorso del codice sorgente.
Nella schermata Selezionare un repository selezionare il repository di codice di esempio.
Nella schermata Configura la pipeline selezionare Docker: Build and push an image to Registro Azure Container pipeline (Docker: Build and push an image to Registro Azure Container pipeline).
Nella schermata Docker selezionare la sottoscrizione di Azure e quindi selezionare Continua.
Selezionare il registro Contenitori dal menu a discesa, specificare un nome immagine e quindi selezionare Convalida e configura.
Azure Pipelines genera un file azure-pipelines.yml che definisce la pipeline.
Esaminare il codice in azure-pipelines.yml e quindi selezionare Salva ed esegui.
Facoltativamente, modificare il messaggio Commit e fornire una descrizione. Selezionare quindi Salva ed esegui di nuovo per eseguire il commit del file azure-pipelines.yml nel repository e avviare una compilazione.
La pagina di esecuzione della compilazione mostra i dettagli e lo stato di avanzamento della compilazione. Per controllare la pipeline in azione, selezionare Compila in Processi.
Dettagli della pipeline
La pipeline viene generata dal modello di contenitore Docker. La fase di compilazione usa l'attività Docker v2 per compilare ed eseguire il push dell'immagine Docker nel registro contenitori.
L'attività Docker usa una connessione al servizio registro Docker con l'autenticazione dell'entità servizio per consentire alla pipeline di eseguire il push delle immagini nel registro contenitori. Il modello di contenitore Docker genera questa connessione al servizio quando crea la pipeline.
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build job
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
Pulire le risorse
Al termine dell'uso delle risorse create in questa esercitazione, è possibile eliminarle per evitare di incorrere in ulteriori addebiti. Eseguire il comando Cloud Shell seguente per eliminare il gruppo di risorse e tutte le risorse al suo interno.
az group delete --name myapp-rg