Delen via


Quickstart: Een containerinstallatiekopieën bouwen om apps te implementeren met behulp van Azure Pipelines

Azure DevOps Services

In deze quickstart ziet u hoe u een containerinstallatiekopieën bouwt voor app-implementatie met behulp van Azure Pipelines. Als u deze installatiekopieën wilt maken, hebt u alleen een Dockerfile in uw opslagplaats nodig. U kunt Linux- of Windows-containers bouwen op basis van de agent die u in uw pijplijn gebruikt.

Vereisten

  • Een Azure-account met een actief abonnement. Gratis een account maken
  • Een GitHub-account. Als u geen account hebt, kunt u zich registreren voor een gratis account.
  • Een Windows- of Linux-agent voor Azure-pijplijnen waarop Docker is geïnstalleerd.
  • Een Azure-account met een actief abonnement. Gratis een account maken
  • Een GitHub-account. Als u geen account hebt, kunt u zich registreren voor een gratis account.

De voorbeeldopslagplaats splitsen

Ga in uw browser naar de volgende voorbeeldopslagplaats en fork deze naar uw GitHub-account.

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Een Linux- of Windows-installatiekopieën bouwen

  1. Meld u aan bij uw Azure DevOps-organisatie en ga naar uw project.

  2. Ga naar Pijplijnen en selecteer Nieuwe pijplijn of Pijplijn maken als u de eerste pijplijn in het project maakt.

  3. Selecteer GitHub als de locatie voor uw broncode.

  4. Selecteer uw opslagplaats en selecteer vervolgens Starter-pijplijn.

    • Als u wordt omgeleid naar GitHub om u aan te melden, voert u uw GitHub-referenties in.
    • Als u wordt omgeleid naar GitHub om de Azure Pipelines-app te installeren, selecteert u Goedkeuren en installeren.
  5. Vervang de inhoud van azure-pipelines.yml door de volgende code. Op basis van of u een Linux- of Windows-app implementeert, moet u ervoor zorgen dat deze respectievelijk zijn ingesteld vmImage op of ubuntu-latest windows-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
    
  6. Wanneer u klaar bent, selecteert u Opslaan en uitvoeren.

  7. Wanneer u het azure-pipelines.yml bestand aan uw opslagplaats toevoegt, wordt u gevraagd een doorvoerbericht toe te voegen. Voer een bericht in en selecteer Opslaan en uitvoeren.

Wanneer u zelf-hostende agents gebruikt, moet u ervoor zorgen dat Docker is geïnstalleerd op de host van de agent en dat de Docker-engine/daemon wordt uitgevoerd met verhoogde bevoegdheden.

Als u de installatiekopie wilt bouwen, moet Docker worden geïnstalleerd op de host van de agent en moet de Docker-engine/-daemon worden uitgevoerd met verhoogde bevoegdheden. Gebruik de volgende stappen om uw pijplijn te maken met behulp van de YAML-pijplijneditor.

  1. Ga naar uw verzameling en maak een project.
  2. Selecteer Pijplijnen in uw project.
  3. Selecteer Pipeline maken.
  4. Selecteer GitHub Enterprise Server als de locatie voor uw broncode.
  5. Als u dat nog niet hebt gedaan, autoriseert u Azure Pipelines om verbinding te maken met uw GitHub Enterprise Server-account.
    1. Selecteer Verbinding maken met GitHub Enterprise Server.
    2. Voer uw accountgegevens in en selecteer Verifiëren en opslaan.
  6. Selecteer uw opslagplaats. Als u wordt omgeleid naar GitHub om de Azure Pipelines-app te installeren, selecteert u Goedkeuren en installeren.
  7. Als u uw pijplijn wilt configureren, selecteert u de sjabloon een Docker-installatiekopieën bouwen.
  8. Vervang in de YAML-pijplijneditor de inhoud van het YAML-bestand door de volgende code. Vervang de naam van de pool door de naam van de pool die uw zelf-hostende agent bevat door docker-functionaliteit.
# 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'

  1. Selecteer Opslaan en uitvoeren.
  2. Selecteer Opslaan en opnieuw uitvoeren op de pagina Opslaan en uitvoeren.

Zie de Docker-taak die door deze voorbeeldtoepassing wordt gebruikt voor meer informatie over het bouwen van Docker-installatiekopieën. U kunt docker-opdrachten ook rechtstreeks aanroepen met behulp van een opdrachtregeltaak.

De containerinstallatiekopieën worden gebouwd en opgeslagen op de agent. U kunt uw installatiekopieën pushen naar Google Container Registry, Docker Hub of Azure Container Registry. Zie Een installatiekopieën pushen naar Docker Hub of Google Container Registry of een installatiekopieën pushen naar Azure Container Registry voor meer informatie.

Resources opschonen

Als u van plan bent om deze toepassing te blijven gebruiken, verwijdert u uw pijplijn en codeopslagplaats.

Veelgestelde vragen

Welke agents kan ik gebruiken om containerinstallatiekopieën te bouwen?

  • U kunt Linux-containerinstallatiekopieën bouwen met behulp van door Microsoft gehoste Ubuntu-agents of zelf-hostende agents op basis van het Linux-platform.

  • U kunt Windows-containerinstallatiekopieën bouwen met behulp van door Microsoft gehoste Windows-agents of zelf-hostende agents op basis van het Windows-platform. Alle door Microsoft gehoste Windows-platformagents worden geleverd met de Moby-engine en client die nodig zijn voor Docker-builds.

  • U kunt momenteel geen door Microsoft gehoste macOS-agents gebruiken om containerinstallatiekopieën te bouwen, omdat de Moby-engine die nodig is voor het bouwen van de installatiekopieën niet vooraf is geïnstalleerd op deze agents.

Raadpleeg de opties voor Windows- en Linux-agents die beschikbaar zijn met door Microsoft gehoste agents voor meer informatie.

Welke vooraf in de cache geplaatste Docker-installatiekopieën zijn beschikbaar op gehoste agents?

Om lange intervallen te voorkomen voor het ophalen van Docker-installatiekopieën voor elke taak uit het containerregister, worden enkele veelgebruikte installatiekopieën vooraf in de cache geplaatst op door Microsoft gehoste agents.

Hoe kan ik de BuildKit-variabele voor mijn Docker-builds instellen?

BuildKit introduceert buildverbeteringen rond prestaties, opslagbeheer, functiefunctionaliteit en beveiliging. BuildKit wordt momenteel niet ondersteund op Windows-hosts.

Als u Docker-builds wilt inschakelen met buildkit, stelt u de DOCKER_BUILDKIT variabele in.

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

Hoe kan ik een zelf-hostende agent gebruiken?

Docker moet worden geïnstalleerd en de engine/daemon die wordt uitgevoerd op de host van de agent. Als Docker niet is geïnstalleerd op de host van de agent, kunt u de Docker-installatietaak toevoegen aan uw pijplijn. U moet de Docker-installatietaak toevoegen vóór de Docker-taak.

Hoe kan ik een Docker-build op basis van scripts maken in plaats van de Docker-taak te gebruiken?

U kunt de build opdracht of een andere Docker-opdracht gebruiken.

docker build -f Dockerfile -t foobar.azurecr.io/hello:world .

Met deze opdracht maakt u een installatiekopie die gelijk is aan één installatiekopie die is gebouwd met de Docker-taak. Intern roept de Docker-taak het binaire Docker-bestand aan op een script en steekt een paar opdrachten samen om nog enkele voordelen te bieden. Meer informatie over Docker-taken.

Kan ik laagcaching hergebruiken tijdens builds op Azure Pipelines?

Als u door Microsoft gehoste agents gebruikt, wordt elke taak verzonden naar een nieuw ingerichte virtuele machine, op basis van de installatiekopie die is gegenereerd op basis van opslagplaatssjablonen van azure-pipelines-image-generation. Deze virtuele machines worden opgeschoond nadat de taak is voltooid. Deze tijdelijke levensduur voorkomt dat deze virtuele machines opnieuw worden gebruikt voor volgende taken en het hergebruik van Docker-lagen in de cache. Als tijdelijke oplossing kunt u een build met meerdere fasen instellen die twee installatiekopieën produceert en deze in een vroeg stadium naar een installatiekopieënregister pusht. Vervolgens kunt u Docker vertellen deze installatiekopieën als cachebron te gebruiken met het --cache-from argument.

Als u zelf-hostende agents gebruikt, kunt u Docker-lagen zonder tijdelijke oplossingen in de cache opslaan, omdat het tijdelijke levensduurprobleem niet van toepassing is op deze agents.

Hoe kan ik Linux-containerinstallatiekopieën bouwen voor andere architecturen dan x64?

Wanneer u door Microsoft gehoste Linux-agents gebruikt, maakt u Linux-containerinstallatiekopieën voor de x64-architectuur. Om installatiekopieën voor andere architecturen, zoals een x86- of ARM-processor, te maken, kunt u een machine-emulator zoals QEMU gebruiken.

In de volgende stappen ziet u hoe u een CONTAINERinstallatiekopieën van een ARM-processor maakt met behulp van QEMU:

  1. Ontwerp uw Dockerfile met een basisinstallatiekopieën die overeenkomen met de doelarchitectuur:

    FROM arm64v8/alpine:latest
    
  2. Voer het volgende script uit in uw taak voordat u de installatiekopieën bouwt:

    # 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
    

Zie qemu-user-static op GitHub voor meer informatie.

Hoe kan ik tests uitvoeren en testresultaten voor toepassingen in containers publiceren?

Zie De taak Testresultaten publiceren voor verschillende opties voor het testen van toepassingen in containers en het publiceren van de resulterende testresultaten.

Volgende stappen

Nadat u de containerinstallatiekopieën hebt gemaakt, pusht u de installatiekopieën naar Azure Container Registry, Docker Hub of Google Container Registry. Als u wilt weten hoe u een installatiekopieën naar een containerregister pusht, gaat u verder met een van de volgende artikelen: