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

  1. Dalla portale di Azure accedere ad Azure Cloud Shell selezionando l'icona nella barra dei menu in alto. Assicurarsi di usare la shell Bash .

    Pulsante di Azure Cloud Shell

  2. 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
    
  3. 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 il az 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

  1. Nel progetto Azure DevOps selezionare Pipeline>nuova pipeline o Crea pipeline se la pipeline è la prima nel progetto.

    Screenshot che mostra la schermata Crea una nuova pipeline.

  2. Selezionare GitHub come percorso del codice sorgente.

  3. Nella schermata Selezionare un repository selezionare il repository di codice di esempio.

  4. 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).

    Screenshot che mostra l'immagine Docker di compilazione e push per Registro Azure Container selezione della pipeline.

  5. Nella schermata Docker selezionare la sottoscrizione di Azure e quindi selezionare Continua.

  6. Selezionare il registro Contenitori dal menu a discesa, specificare un nome immagine e quindi selezionare Convalida e configura.

    Screenshot che mostra come configurare una pipeline Docker per compilare e pubblicare un'immagine in Registro Azure Container.

    Azure Pipelines genera un file azure-pipelines.yml che definisce la pipeline.

  7. Esaminare il codice in azure-pipelines.yml e quindi selezionare Salva ed esegui.

    Screenshot del pulsante Salva ed esegui in una nuova pipeline YAML.

  8. 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.

  9. 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.

    Screenshot che mostra il collegamento Compila nella pagina di esecuzione del processo.

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