Delen via


Docker-images bouwen en publiceren naar Azure Container Registry

Azure DevOps Services | Azure DevOps Server 2022

Met behulp van Azure Pipelines kunt u een pipeline instellen om uw Docker-afbeeldingen te bouwen en te publiceren naar Azure Container Registry. In dit artikel leert u het volgende:

  • Een Azure Container Registry maken
  • Een zelf-hostende agent instellen op een Azure-VM
  • De beheerde service-identiteit instellen
  • Een Docker Registry-serviceverbinding maken
  • Uw image bouwen en publiceren naar Azure Container Registry

Vereisten

Code ophalen

Fork of kloon de voorbeeld-app om deze tutorial te volgen.

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

Een Azure Container Registry maken

  1. Ga naar Azure Portal.

  2. Selecteer Een resource maken in het linkernavigatievenster en selecteer vervolgens Containers en vervolgens Container Registry.

  3. Selecteer uw abonnement en selecteer vervolgens uw resourcegroep of maak een nieuwe.

  4. Voer een registernaam in voor het containerregister. De registernaam moet uniek zijn binnen Azure en moet ten minste 5 tekens bevatten.

  5. Selecteer de gewenste locatie en SKU en selecteer vervolgens Beoordelen en maken.

  6. Controleer uw instellingen en selecteer Maak wanneer u klaar bent.

Een zelf-hostende agent-VM instellen

Als u Managed Service Identity wilt gebruiken met Azure Pipelines om Docker-installatiekopieën te publiceren naar Azure Container Registry, moet u onze eigen zelf-hostende agent instellen op een Azure-VM.

Een VM maken:

  1. Ga naar Azure Portal.

  2. Selecteer Resource maken in het linkernavigatievenster en selecteer vervolgens Virtuele machine ->Maken.

  3. Selecteer uw abonnement en selecteer vervolgens de resourcegroep die u hebt gebruikt om uw containerregister te maken.

  4. Geef uw virtuele machine een naam en kies een image.

  5. Voer uw gebruikersnaam en wachtwoord in en selecteer Beoordelen en maken.

  6. Controleer uw instellingen en selecteer Maak wanneer u klaar bent.

  7. Selecteer Naar de resource gaan zodra de implementatie is voltooid.

Een agentpool maken

  1. Selecteer in uw Azure DevOps-project het tandwielpictogram tandwielpictogram om naar uw Project-instellingen te navigeren.

  2. Selecteer Agentpools en selecteer vervolgens Pool toevoegen.

  3. Selecteer Nieuw en selecteer vervolgens Zelf-gehost uit het keuzemenu Pooltype.

  4. Geef uw pool een naam en schakel vervolgens het selectievakje Toegang verlenen aan alle pijplijnen in.

  5. Selecteer Maken wanneer u klaar bent.

  6. Selecteer nu de pool die u zojuist hebt gemaakt en selecteer vervolgens Nieuwe agent.

  7. We gebruiken de instructies in dit venster om uw agent in te stellen op de VM die u eerder hebt gemaakt. Selecteer de knop Kopiëren om de downloadkoppeling naar het Klembord te kopiëren.

    Een schermopname die laat zien hoe u een agent instelt.

Een persoonlijk toegangstoken maken

  1. Selecteer in uw Azure DevOps-project gebruikersinstellingen en selecteer vervolgens Persoonlijke toegangstokens.

  2. Selecteer Nieuw token om een nieuw persoonlijk toegangstoken te maken.

  3. Voer een naam in voor uw PAT en kies vervolgens een vervaldatum.

  4. Kies Zelf gedefinieerd in Bereiken en kies vervolgens Toon alle bereiken.

  5. Selecteer Agentpools ->Lezen en beheren, en Implementatiegroepen ->Lezen en beheren.

  6. Selecteer Maken wanneer u klaar bent en sla uw PAT op een veilige locatie op.

Een zelf-gehoste agent instellen

  1. Maak in Azure Portal verbinding met uw virtuele machine.

  2. Voer in een PowerShell-opdrachtprompt met verhoogde bevoegdheid de volgende opdracht uit om de agent te downloaden.

    Invoke-WebRequest -URI <YOUR_AGENT_DOWNLOAD_LINK> -UseBasicParsing  -OutFile <FILE_PATH> 
    ##Example: Invoke-WebRequest -URI https://download.agent.dev.azure.com/agent/4.255.0/vsts-agent-win-x64-4.255.0.zip -OutFile C:\vsts-agent-win-x64-4.255.0.zip
    
  3. Voer de volgende opdracht uit om uw agent te extraheren en te maken.

    mkdir agent ; cd agent
    Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("<FILE_PATH>", "$PWD")
    
  4. Voer de volgende opdracht uit om de agent te configureren.

    .\config.cmd
    
  5. Voer uw server-URL in wanneer u om invoer wordt gevraagd. Voorbeeld: https://dev.azure.com/fabrikamFiber

  6. Druk op Enter wanneer u wordt gevraagd om het verificatietype om PAT-verificatie te kiezen.

  7. Plak uw persoonlijke toegangstoken dat u eerder hebt gemaakt en druk op Enter.

  8. Voer de naam van uw agentgroep in en voer de naam van uw agent in.

  9. Laat de standaardwaarde voor de werkmap staan en voer vervolgens Y in als u uw agent als een service wilt uitvoeren.

    Een schermopname die laat zien hoe u een agent instelt op een Azure-VM.

  10. Nu de agent klaar is om te gaan luisteren naar taken, gaan we Docker installeren op onze VIRTUELE machine. Voer de volgende opdracht uit om Docker te downloaden.

    Invoke-WebRequest -URI https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe -OutFile <DOWNLOAD_PATH>
    
  11. Navigeer naar het downloadpad en voer vervolgens de volgende opdracht uit om Docker te installeren en te starten.

    Start-Process 'Docker%20Desktop%20Installer.exe' -Wait install
    
  12. Ga nu terug naar de map van de agent en voer het cmd-bestand uit om de agent uit te voeren op uw Azure-VM.

    .\run.cmd
    
  13. Uw agent moet nu worden vermeld in uw agentgroep -> Agents in de Azure DevOps-portal.

    Een schermopname van de agent die beschikbaar is op het tabblad Agents.

De beheerde identiteit instellen

  1. Navigeer in Azure Portal naar de VM die u eerder hebt gemaakt.

  2. Selecteer Identiteit in het linkernavigatievenster en schakel vervolgens de door het systeem toegewezen identiteit in.

  3. Selecteer Opslaan wanneer u klaar bent en bevestig uw keuze.

    Een schermopname van het inschakelen van door het systeem toegewezen identiteit.

  4. Selecteer Azure-roltoewijzingen en selecteer Roltoewijzing toevoegen.

  5. Selecteer Resource group uit de Scope keuzelijst.

  6. Selecteer je abonnement en resourcegroep, en selecteer vervolgens de rol AcrPush.

  7. Herhaal de stappen 5 & 6 om de AcrPull-rol toe te voegen.

    Een schermopname die laat zien hoe u acrpull- en pushrollen instelt.

Een Docker-registerserviceverbinding maken

  1. Selecteer in uw Azure DevOps-project het tandwielpictogram tandwielpictogram om naar uw Project-instellingen te navigeren.

  2. Selecteer Serviceverbindingen in het linkerdeelvenster.

  3. Selecteer Nieuwe serviceverbinding en selecteer vervolgens Docker Registry en vervolgens Volgende.

  4. Selecteer Azure Container Registry en selecteer daarna Managed Service Identity als uw verificatietype.

  5. Voer uw abonnements-id, abonnementsnaam en de aanmeldingsserver van uw Azure-containerregister in. Plak de door het systeem toegewezen tenant-id van uw VM die u in de vorige stap in het tekstveld Tenant-id hebt gemaakt.

  6. Voer een naam in voor uw serviceverbinding en selecteer het vakje Toegang verlenen aan alle pijplijnen. Als u deze optie wilt selecteren, hebt u de rol Beheerder van de serviceverbinding nodig.

  7. Selecteer Opslaan wanneer u klaar bent.

    Een schermopname van het instellen van een DOCKER-registerserviceverbinding MSI.

Bouwen en publiceren in Azure Container Registry

  1. Selecteer Pijplijnen in uw Azure DevOps-project en selecteer vervolgens Pijplijn maken.

  2. Selecteer de service die als host fungeert voor uw broncode (Azure-opslagplaatsen, GitHub enzovoort).

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

  4. Verwijder de standaard yaml-pijplijn en gebruik het volgende codefragment:

    trigger:
    - main
    
    variables:
      dockerRegistryServiceConnection: '<SERVICE_CONNECTION_NAME>'
      imageRepository: '<IMAGE_NAME>'
      dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
      tag: '$(Build.BuildId)'
    
    stages:
    - stage: Build
      displayName: Build and publish stage
      jobs:
      - job: Build
        displayName: Build job
        pool:
          name: '<YOUR_AGENT_POOL_NAME>'
        steps:
        - task: DockerInstaller@0
          inputs:
            dockerVersion: '17.09.0-ce'
    
        - task: Docker@2
          displayName: Build and publish image to Azure Container Registry
          inputs:
            command: buildAndPush
            containerRegistry: $(dockerRegistryServiceConnection)
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            tags: |
              $(tag)
    
  5. Zodra de pijplijnuitvoering is voltooid, kunt u uw image in Azure verifiëren. Navigeer naar uw Azure Container Registry in Azure Portal en selecteer opslagplaatsen.

    Een schermopname van de afbeelding in Azure Portal.

Resources opschonen

Als u niet van plan bent om deze toepassing te blijven gebruiken, verwijdert u de resourcegroep om lopende kosten te voorkomen.

az group delete --name myapp-rg