Dela via


Använda Docker YAML för att skapa och push-överföra Docker-avbildningar till Azure Container Registry

Azure DevOps Services

Den här självstudien visar hur du använder en pipeline baserat på en Azure Pipelines Docker-mall för att skapa ett containerbaserat program och push-överföra den till Azure Container Registry. Mallen konfigurerar en YAML-pipeline för kontinuerlig integrering där ändringar i den nya kodlagringsplatsen utlöser pipelinen för att skapa och publicera uppdaterade Docker-avbildningar i registret.

Pipelinen för Docker-containermallen använder Microsoft-värdbaserade agenter och skapar en tjänsthuvudnamnsbaserad tjänstanslutning till Azure Container Registry. En pipeline som utför en liknande process med hjälp av lokalt installerade agenter och en tjänstanslutning som du skapar själv finns i Skapa och skicka Docker-avbildningar till Azure Container Registry.

Förutsättningar

Hämta exempelappen

I GitHub förgrenar eller klonar du Docker- och Kubernetes-exempellagringsplatsen Node.JS app .

Skapa ett containerregister

  1. Logga in på Azure Cloud Shell från Azure-portalen genom att välja ikonen i den översta menyraden. Se till att använda Bash-gränssnittet.

    Azure Cloud Shell-knapp

  2. I Cloud Shell kör du följande kommandon för att skapa en resursgrupp och ett Azure-containerregister med hjälp av Azure CLI. Containerregistrets namn måste vara gemener.

    az group create --name myapp-rg --location eastus
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    
  3. Om du vill distribuera en Docker-avbildning till Azure-containerregistret måste du aktivera administratörsanvändarkontot för registret, som är inaktiverat som standard. Om du vill aktivera administratörsanvändaren för registret använder du parametern --admin-enabled med az acr update kommandot . Mer information och instruktioner finns i Administratörskonto.

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

Du kan också använda användargränssnittet för Azure-portalen för att skapa ditt Azure-containerregister. Anvisningar finns i Skapa ett containerregister. Aktivera administratörskontot i Egenskaper när du har skapat registret.

Skapa pipelinen

  1. I ditt Azure DevOps-projekt väljer du Pipelines>Ny pipeline eller Skapa pipeline om den här pipelinen är den första i projektet.

    Skärmbild som visar skärmen Skapa en ny pipeline.

  2. Välj GitHub som plats för källkoden.

  3. På skärmen Välj en lagringsplats väljer du exempelkodlagringsplatsen.

  4. På skärmen Konfigurera din pipeline väljer du Docker: Build och push-överför en avbildning till Azure Container Registry-pipelinen.

    Skärmbild som visar valet Skapa och push-överföra Docker-avbildningen till Azure Container Registry-pipelinen.

  5. På Docker-skärmen väljer du din Azure-prenumeration och väljer sedan Fortsätt.

  6. Välj ditt containerregister på den nedrullningsbara menyn, ange ett avbildningsnamn och välj sedan Verifiera och konfigurera.

    Skärmbild som visar hur du konfigurerar en Docker-pipeline för att skapa och publicera en avbildning till Azure Container Registry.

    Azure Pipelines genererar en azure-pipelines.yml fil som definierar din pipeline.

  7. Granska koden i azure-pipelines.yml och välj sedan Spara och kör.

    Skärmbild av knappen Spara och kör i en ny YAML-pipeline.

  8. Du kan också redigera incheckningsmeddelandet och ange en beskrivning. Välj sedan Spara och kör igen för att checka in azure-pipelines.yml filen till lagringsplatsen och starta en version.

  9. På byggkörningssidan visas bygginformation och förlopp. Om du vill se din pipeline i praktiken väljer du Skapa under Jobb.

    Skärmbild som visar länken Skapa på jobbkörningssidan.

Pipelineinformation

Pipelinen genereras från Docker-containermallen. Byggfasen använder Docker v2-uppgiften för att skapa och push-överföra Docker-avbildningen till containerregistret.

Docker-uppgiften använder en Docker-registertjänstanslutning med autentisering med tjänstens huvudnamn för att aktivera din pipeline för att skicka avbildningar till containerregistret. Docker-containermallen genererar den här tjänstanslutningen när pipelinen skapas.

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

Rensa resurser

När du är klar med de resurser som du skapade i den här självstudien kan du ta bort dem för att undvika ytterligare avgifter. Kör följande Cloud Shell-kommando för att ta bort resursgruppen och alla resurser i den.

az group delete --name myapp-rg