Delen via


Docker-installatiekopieën bouwen en publiceren naar Azure Container Registry

Azure DevOps Services | Azure DevOps Server 2022

Met Behulp van Azure Pipelines kunt u een pijplijnwerkstroom instellen voor het bouwen en publiceren van uw Docker-installatiekopieën 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 installatiekopieën bouwen en publiceren naar Azure Container Registry

Vereisten

Code ophalen

Fork of kloon de voorbeeld-app die u samen met deze zelfstudie moet 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 Vervolgens Maken 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 Een 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 installatiekopieën.

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

  6. Controleer uw instellingen en selecteer Vervolgens Maken 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-hostend in de vervolgkeuzelijst 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. Selecteer Aangepast gedefinieerd in Bereiken en selecteer vervolgens Alle bereiken weergeven.

  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-hostende 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://vstsagentpackage.azureedge.net/agent/2.213.2/vsts-agent-win-x64-2.213.2.zip -OutFile C:\vsts-agent-win-x64-2.213.2.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 vervolgens Roltoewijzing toevoegen.

  5. Selecteer Resourcegroep in de vervolgkeuzelijst Bereik .

  6. Selecteer uw abonnement en uw 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 vervolgens Managed Service Identity als verificatietype.

  5. Voer de naam van uw abonnements-id-abonnement 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 schakel het selectievakje Toegang verlenen aan alle pijplijnen in. 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 naar 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 installatiekopieën controleren in Azure. 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