Delen via


Docker YAML gebruiken om Docker-installatiekopieën te bouwen en te pushen naar Azure Container Registry

Azure DevOps Services

In deze zelfstudie leert u hoe u een pijplijn gebruikt op basis van een Docker-sjabloon voor Azure Pipelines om een containertoepassing te bouwen en deze naar Azure Container Registry te pushen. Met de sjabloon wordt een YAML-pijplijn voor continue integratie ingesteld, waarbij wijzigingen in de nieuwe codeopslagplaats de pijplijn activeren om bijgewerkte Docker-installatiekopieën naar het register te bouwen en publiceren.

De Docker-containersjabloonpijplijn maakt gebruik van door Microsoft gehoste agents en maakt een service-principal-serviceverbinding met Azure Container Registry. Zie Docker-installatiekopieën bouwen en pushen naar Azure Container Registry voor een pijplijn die een vergelijkbaar proces uitvoert met behulp van zelf-hostende agents en een serviceverbinding die u zelf maakt.

Vereisten

  • Een Azure-account waarvoor u gemachtigd bent om resources te maken en te configureren. Als u geen Azure-account hebt, meldt u zich aan voor een gratis account.

  • Een Azure DevOps-organisatie en -project waar u gemachtigd bent om pijplijnen te maken en apps te implementeren. Zie Een nieuwe organisatie maken of een project maken in Azure DevOps als u een organisatie of project wilt maken.

  • Een GitHub-account.

    Belangrijk

    Wanneer u GitHub in de volgende procedures gebruikt, wordt u mogelijk gevraagd om een GitHub-serviceverbinding te maken, u aan te melden bij GitHub, te verifiëren bij GitHub-organisaties, Azure Pipelines te installeren of Azure Pipelines te autoriseren. Volg de instructies op het scherm om het proces te voltooien. Zie Toegang tot GitHub-opslagplaatsen voor meer informatie.

De voorbeeld-app downloaden

In GitHub fork of kloont u de voorbeeld-Docker en Kubernetes Node.JS app-opslagplaats .

Een containerregister maken

  1. Meld u vanuit Azure Portal aan bij Azure Cloud Shell door het pictogram in de bovenste menubalk te selecteren. Zorg ervoor dat u de Bash-shell gebruikt.

    Knop Azure Cloud Shell

  2. Voer in Cloud Shell de volgende opdrachten uit om een resourcegroep en een Azure-containerregister te maken met behulp van de Azure CLI. De containerregisternaam moet kleine letters bevatten.

    az group create --name myapp-rg --location eastus
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    
  3. Als u een Docker-installatiekopieën wilt implementeren in het Azure-containerregister, moet u het beheerdersaccount voor het register inschakelen. Dit is standaard uitgeschakeld. Als u de gebruiker met beheerdersrechten voor uw register wilt inschakelen, gebruikt u de --admin-enabled parameter met de az acr update opdracht. Zie Beheerdersaccount voor meer informatie en instructies.

    az acr update -n <acrName> --admin-enabled true
    

U kunt ook de gebruikersinterface van Azure Portal gebruiken om uw Azure-containerregister te maken. Zie Een containerregister maken voor instructies. Schakel het beheerdersaccount in Eigenschappen in nadat u het register hebt gemaakt.

Maak de pijplijn

  1. Selecteer in uw Azure DevOps-project pijplijnen>een nieuwe pijplijn of maak een pijplijn als deze pijplijn de eerste is in het project.

    Schermopname van het scherm Een nieuwe pijplijn maken.

  2. Selecteer GitHub als de locatie van uw broncode.

  3. Selecteer uw voorbeeldcodeopslagplaats in het scherm Een opslagplaats selecteren.

  4. Selecteer in het scherm Uw pijplijn configureren de Docker: Een installatiekopieën bouwen en pushen naar de Azure Container Registry-pijplijn.

    Schermopname van de Docker-installatiekopieën bouwen en pushen naar de azure Container Registry-pijplijnselectie.

  5. Selecteer uw Azure-abonnement in het Docker-scherm en selecteer vervolgens Doorgaan.

  6. Selecteer uw containerregister in de vervolgkeuzelijst, geef een installatiekopieënnaam op en selecteer vervolgens Valideren en configureren.

    Schermopname die laat zien hoe u een Docker-pijplijn configureert voor het bouwen en publiceren van een installatiekopieën naar Azure Container Registry.

    Azure Pipelines genereert een azure-pipelines.yml-bestand dat uw pijplijn definieert.

  7. Controleer de code in azure-pipelines.yml en selecteer Opslaan en uitvoeren.

    Schermopname van de knop Opslaan en uitvoeren in een nieuwe YAML-pijplijn.

  8. Bewerk desgewenst het doorvoerbericht en geef een beschrijving op. Selecteer Vervolgens Opslaan en opnieuw uitvoeren om het azure-pipelines.yml-bestand door te voeren in uw opslagplaats en een build te starten.

  9. Op de pagina voor het uitvoeren van de build worden details en voortgang van de build weergegeven. Als u de pijplijn in actie wilt bekijken, selecteert u Bouwen onder Taken.

    Schermopname van de koppeling Build op de pagina voor het uitvoeren van taken.

Pijplijndetails

De pijplijn wordt gegenereerd op basis van de Docker-containersjabloon. In de buildfase wordt de Docker v2-taak gebruikt om uw Docker-installatiekopieën te bouwen en naar het containerregister te pushen.

De Docker-taak maakt gebruik van een Docker-registerserviceverbinding met service-principal-verificatie om uw pijplijn in staat te stellen installatiekopieën naar uw containerregister te pushen. De Docker-containersjabloon genereert deze serviceverbinding wanneer deze de pijplijn maakt.

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

Resources opschonen

Wanneer u klaar bent met het gebruik van de resources die u in deze zelfstudie hebt gemaakt, kunt u ze verwijderen om verdere kosten te voorkomen. Voer de volgende Cloud Shell-opdracht uit om uw resourcegroep en alle resources erin te verwijderen.

az group delete --name myapp-rg