Guida introduttiva: Creare un'immagine di container per implementare applicazioni con Azure Pipelines
Servizi di Azure DevOps
Questa guida introduttiva illustra come creare un'immagine del contenitore per la distribuzione di app con Azure Pipelines. Per compilare questa immagine, è sufficiente un Dockerfile nel repository. È possibile compilare contenitori Linux o Windows, in base all'agente usato nella pipeline.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un account GitHub. Se non è disponibile, iscriversi per riceverne uno gratuito.
- Un agente Windows o Linux della pipeline di Azure con Docker installato.
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un account GitHub. Se non è disponibile, iscriversi per riceverne uno gratuito.
Creare una copia tramite fork del repository di esempi
Nel tuo browser, vai al seguente repository di esempio ed effettua un fork sul tuo account GitHub.
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Creare un'immagine Linux o Windows
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Passare a Pipeline e selezionare Nuova pipeline o Crea pipeline se si crea la prima pipeline nel progetto.
Selezionare GitHub come percorso per il codice sorgente.
Selezionare il repository, quindi selezionare Pipeline di avvio.
- Se si viene reindirizzati a GitHub per accedere, immettere le credenziali di GitHub.
- Se si viene reindirizzati a GitHub per installare l'app Azure Pipelines, selezionare Approva e installa.
Sostituire il contenuto di azure-pipelines.yml con il codice seguente. In base a se si sta distribuendo un'app Linux o Windows, assicurarsi rispettivamente di impostare
vmImage
suubuntu-latest
owindows-latest
.trigger: - main pool: vmImage: 'ubuntu-latest' variables: imageName: 'pipelines-javascript-docker' steps: - task: Docker@2 displayName: Build an image inputs: repository: $(imageName) command: build Dockerfile: app/Dockerfile
Al termine, selezionare Salva ed esegui.
Quando si aggiunge il file azure-pipelines.yml al repository, viene richiesto di aggiungere un messaggio di commit. Immettere un messaggio e quindi selezionare Salva ed esegui.
Quando si usano agenti self-hosted, assicurarsi che Docker sia installato nell'host dell'agente e che il motore/daemon Docker sia in esecuzione con privilegi elevati.
Per compilare l'immagine, Docker deve essere installato nell'host dell'agente e il motore/daemon Docker deve essere in esecuzione con privilegi elevati. Usare la procedura seguente per creare la pipeline usando l'editor della pipeline YAML.
- Vai alla tua raccolta e crea un progetto.
- Nel progetto selezionare Pipeline.
- Seleziona Crea Pipeline.
- Selezionare GitHub Enterprise Server come percorso per il codice sorgente.
- Se non è già stato fatto, autorizzare Azure Pipelines a connettersi all'account GitHub Enterprise Server.
- Selezionare Connetti a GitHub Enterprise Server.
- Immettere i dettagli dell'account e quindi selezionare Verifica e salva.
- Seleziona il tuo repository. Se si viene reindirizzati a GitHub per installare l'app Azure Pipelines, selezionare Approva e installa.
- Per configurare la pipeline, selezionare il modello Creare un'immagine Docker.
- Nell'editor della pipeline YAML sostituire il contenuto del file YAML con il codice seguente. Sostituisci il nome del pool con quello del pool che contiene il tuo agente self-hosted dotato di funzionalità Docker.
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
trigger:
- main
pool:
name: default
demands: docker
variables:
imageName: 'pipelines-javascript-docker'
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'
- Seleziona Salva ed Esegui.
- Nella pagina Salva ed esegui selezionare Salva ed esegui di nuovo.
Per altre informazioni sulla creazione di immagini Docker, vedere l'attività Docker usata da questa applicazione di esempio. È anche possibile richiamare direttamente i comandi Docker usando una attività della riga di comando.
Le immagini dei contenitori vengono create e archiviate sull'agente. È possibile eseguire il push dell'immagine in Registro Contenitori Google, nell'hub Docker o Registro Azure Container. Per ulteriori informazioni, vedere Eseguire il push di un'immagine su Docker Hub o Google Container Registry oppure Eseguire il push di un'immagine su Azure Container Registry.
Pulire le risorse
Se non si prevede di continuare a usare questa applicazione, eliminare la pipeline e il repository di codice.
Domande frequenti
Quali agenti è possibile usare per compilare le immagini del contenitore?
È possibile compilare immagini del contenitore Linux usando agenti Ubuntu ospitati da Microsoft o agenti self-hosted basati sulla piattaforma Linux.
È possibile compilare immagini del contenitore Windows usando agenti Windows ospitati da Microsoft o agenti self-hosted basati sulla piattaforma Windows. Tutti gli agenti basati sulla piattaforma Windows ospitati da Microsoft vengono forniti con il motore Moby e il client necessari per le compilazioni Docker.
Attualmente non è possibile usare gli agenti macOS ospitati da Microsoft per compilare immagini del contenitore perché il motore Moby necessario per la compilazione delle immagini non è preinstallato in questi agenti.
Per altre informazioni, vedere le Opzioni dell'agente Windows e Linux disponibili con gli agenti ospitati da Microsoft.
Quali immagini Docker preinstallate sono disponibili sugli agenti ospitati?
Per evitare di perdere tempo a effettuare il pull delle immagini Docker per ogni processo dal registro dei contenitori, alcune immagini comunemente usate vengono precaricate sugli agenti ospitati da Microsoft.
Come posso impostare la variabile BuildKit per le mie build Docker?
BuildKit introduce miglioramenti alla compilazione per prestazioni, gestione dell'archiviazione, funzionalità e sicurezza. BuildKit non è attualmente supportato in host Windows.
Per abilitare le compilazioni Docker usando BuildKit, impostare la variabile DOCKER_BUILDKIT .
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
imageName: 'pipelines-javascript-docker'
DOCKER_BUILDKIT: 1
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: app/Dockerfile
Come è possibile usare un agente ospitato autonomamente?
Docker deve essere installato e il motore/daemon in esecuzione nell'host dell'agente. Se Docker non è installato nell'host dell'agente, è possibile aggiungere l'attività del programma di installazione Docker alla pipeline. È necessario aggiungere l'attività Docker Installer prima dell'attività Docker.
Come è possibile creare una compilazione Docker basata su script anziché usare l'attività Docker?
È possibile usare il build
comando o qualsiasi altro comando Docker.
docker build -f Dockerfile -t foobar.azurecr.io/hello:world .
Questo comando crea un'immagine equivalente a un'immagine compilata con l'attività Docker. Internamente, l'attività Docker chiama il file binario Docker in uno script e unisce altri comandi aggiuntivi per offrire ulteriori vantaggi. Scopri di più sull'attività Docker.
È possibile riutilizzare la memorizzazione nella cache dei livelli durante le compilazioni in Azure Pipelines?
Se si utilizzano agenti ospitati da Microsoft, ogni lavoro viene inviato a una nuova macchina virtuale, a cui è stato appena effettuato il provisioning, in base all'immagine generata dai modelli del repository azure-pipelines-image-generation. Queste macchine virtuali vengono pulite al termine del processo. Questa durata temporanea impedisce il riutilizzo di queste macchine virtuali per i processi successivi e il riutilizzo dei livelli Docker memorizzati nella cache. Come soluzione alternativa, è possibile configurare una compilazione a più fasi che produce due immagini e le inserisce in un registro immagini in una fase iniziale. È quindi possibile indicare a Docker di usare queste immagini come origine della cache con l'argomento --cache-from
.
Se si usano agenti self-hosted, è possibile memorizzare nella cache i livelli Docker senza soluzioni alternative perché il problema temporaneo della durata non si applica a questi agenti.
Come è possibile compilare immagini del contenitore Linux per architetture diverse da x64?
Quando si usano agenti Linux ospitati da Microsoft, si creano immagini di container Linux per l'architettura x64. Per creare immagini per altre architetture, ad esempio x86 o processore ARM, è possibile usare un emulatore di computer, ad esempio QEMU.
La procedura seguente illustra come creare un'immagine del contenitore del processore ARM usando QEMU:
Creare il Dockerfile con un'immagine di base corrispondente all'architettura di destinazione:
FROM arm64v8/alpine:latest
Esegui il seguente script nel tuo lavoro prima di costruire l'immagine.
# register QEMU binary - this can be done by running the following image docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # build your image
Per altre informazioni, vedere qemu-user-static in GitHub.
Come posso eseguire test e pubblicare i risultati dei test per le applicazioni containerizzate?
Per diverse opzioni per il testing di applicazioni containerizzate e la pubblicazione dei risultati dei test, vedere Pubblicare Risultati dei Test.
Passaggi successivi
Dopo aver compilato l'immagine del contenitore, eseguire il push dell'immagine in Registro Azure Container, nell'hub Docker o nel registro Contenitori Google. Per informazioni su come eseguire il push di un'immagine in un registro contenitori, continuare con uno degli articoli seguenti: