Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Servizi di Azure DevOps
In questa guida introduttiva si apprenderà come creare un'immagine del contenitore per la distribuzione di app usando Azure Pipelines. Per compilare questa immagine, è necessario solo un Dockerfile nel repository. È possibile compilare contenitori Linux o Windows a seconda dell'agente usato nella pipeline.
Prerequisiti
Categoria | Requisiti |
---|---|
Azure DevOps | - Un progetto Azure DevOps. - La possibilità di eseguire pipeline su agenti ospitati da Microsoft. È possibile acquistare un incarico parallelo oppure richiedere un piano gratuito. - Conoscenza di base di YAML e Azure Pipelines. Per altre informazioni, vedere Creare la prima pipeline. Autorizzazioni - : Per creare una pipeline, gli utenti devono trovarsi nel gruppo Collaboratori e il gruppo deve avere l'autorizzazione Crea pipeline di compilazione impostata su Consenti. I membri dei gruppi Build Administrators e Project Administrators possono anche gestire le pipeline. |
GitHub | - Un account GitHub. - Una connessione al servizio GitHub per autorizzare Azure Pipelines. |
Azzurro | Una sottoscrizione di Azure. |
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. A seconda che si stia distribuendo un'app Linux o Windows, 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. Eseguire il push dell'immagine in Registro Google Container, nell'hub Docker o nel 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.
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 risparmiare tempo nell'operazione di scaricamento delle immagini Docker da un registro dei container per ogni processo, alcune immagini comunemente usate sono 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 o il daemon devono essere in esecuzione nell'host dell'agente. Se Docker non è installato, aggiungere l'attività del programma di installazione Docker alla pipeline. Aggiungere l'attività Programma di installazione Docker 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 usano agenti ospitati da Microsoft, ogni processo viene inviato a una macchina virtuale appena fornita, basata sull'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.
Seguire questa procedura per 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 esplorare le opzioni per il test di applicazioni in contenitori e la pubblicazione dei risultati dei test, vedere Pubblicare l'attività Risultati 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, vedere uno degli articoli seguenti: