Freigeben über


Verwenden von Docker-YAML zum Erstellen von Docker-Images und Pushen dieser Images an Azure Container Registry

Azure DevOps Services

In diesem Tutorial wird gezeigt, wie Sie eine Pipeline basierend auf einer Docker-Vorlage für Azure Pipelines verwenden, um eine containerisierte Anwendung zu erstellen und an Azure Container Registry zu pushen. Die Vorlage richtet eine YAML-Pipeline für Continuous Integration ein, bei der neue Coderepositoryänderungen die Pipeline auslösen, um aktualisierte Docker-Images in der Registrierung zu erstellen und zu veröffentlichen.

Die Docker-Containervorlagenpipeline verwendet von Microsoft gehostete Agents und erstellt eine dienstprinzipalbasierte Dienstverbindung mit Azure Container Registry. Informationen zu einer Pipeline, die mithilfe eines selbstgehosteten Agents und einer von Ihnen selbst erstellten Dienstverbindung einen ähnlichen Prozess ausführt, finden Sie unter Erstellen und Veröffentlichen von Docker-Images in Azure Container Registry.

Voraussetzungen

  • Ein Azure-Konto, in dem Sie über die Berechtigung zum Erstellen und Konfigurieren von Ressourcen verfügen. Wenn Sie kein Azure-Konto haben, registrieren Sie sich für ein kostenloses Konto.

  • Eine Azure DevOps-Organisation und ein Projekt, in dem Sie die Berechtigung zum Erstellen von Pipelines und Bereitstellen von Apps haben. Informationen zum Erstellen einer Organisation oder eines Projekts finden Sie unter Erstellen einer neuen Organisation oder Erstellen eines Projekts in Azure DevOps.

  • Ein GitHub-Konto.

    Wichtig

    Wenn Sie GitHub in den folgenden Verfahren verwenden, werden Sie möglicherweise aufgefordert, eine GitHub-Dienstverbindung zu erstellen, sich bei GitHub anzumelden, sich bei GitHub-Organisationen zu authentifizieren, Azure Pipelines zu installieren oder Azure Pipelines zu autorisieren. Folgen Sie den Anweisungen auf dem Bildschirm, um den Prozess abzuschließen. Weitere Informationen finden Sie unter Zugriff auf GitHub-Repositorys.

Abrufen der Beispiel-App

Forken oder klonen Sie auf GitHub das Repository mit der Beispiel-App für Docker und Kubernetes Node.JS.

Erstellen einer Containerregistrierung

  1. Melden Sie sich im Azure-Portal bei Azure Cloud Shell an, indem Sie auf der oberen Menüleiste das entsprechende Symbol auswählen. Verwenden Sie unbedingt die Bash-Shell.

    Azure Cloud Shell-Schaltfläche

  2. Führen Sie in Cloud Shell die folgenden Befehle aus, um eine Ressourcengruppe und eine Azure-Containerregistrierung mithilfe der Azure CLI zu erstellen. Der Container Registry-Name darf ausschließlich Kleinbuchstaben enthalten.

    az group create --name myapp-rg --location eastus
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    
  3. Zum Bereitstellen eines Docker-Images in der Azure-Containerregistrierung müssen Sie das Administratorbenutzerkonto für die Registrierung aktivieren. Dieses Konto ist standardmäßig deaktiviert. Verwenden Sie zum Aktivieren des Administratorbenutzers für Ihre Registrierung den Parameter --admin-enabled mit dem Befehl az acr update. Weitere Informationen und Anweisungen finden Sie unter Administratorkonto.

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

Alternativ können Sie die Benutzeroberfläche des Azure-Portals verwenden, um Ihre Azure-Containerregistrierung zu erstellen. Eine entsprechende Anleitung finden Sie unter Erstellen einer Containerregistrierung. Aktivieren Sie das Administratorkonto unter Eigenschaften, nachdem Sie die Registrierung erstellt haben.

Erstellen der Pipeline

  1. Wählen Sie in Ihrem Azure DevOps-Projekt Pipelines>Neue Pipeline oder Pipeline erstellen aus, falls diese Pipeline die erste Pipeline im Projekt ist.

    Screenshot: Bildschirm „Neue Pipeline erstellen“

  2. Wählen Sie GitHub als Speicherort für Ihren Quellcode aus.

  3. Wählen Sie auf dem Bildschirm Repository auswählen das Repository mit dem Beispielcode aus.

  4. Wählen Sie auf dem Bildschirm Pipeline konfigurieren die Pipeline Docker: Erstellen und Pushen eines Images für Azure Container Registry aus.

    Screenshot: Auswählen der Pipeline zum Erstellen und Pushen eines Docker-Images in Azure Container Registry

  5. Wählen Sie auf dem Bildschirm Docker Ihr Azure-Abonnement und dann Weiter aus.

  6. Wählen Sie im Dropdownmenü Ihre Containerregistrierung aus, geben Sie unter Imagename einen Namen ein, und wählen Sie dann Überprüfen und Konfigurieren aus.

    Screenshot: Konfigurieren einer Docker-Pipeline zum Erstellen und Veröffentlichen eines Images in Azure Container Registry

    Azure Pipelines generiert die Datei azure-pipelines.yml, die Ihre Pipeline definiert.

  7. Überprüfen Sie den Code in azure-pipelines.yml, und wählen Sie dann Speichern und ausführen aus.

    Screenshot: Schaltfläche „Speichern und ausführen“ in einer neuen YAML-Pipeline

  8. Bearbeiten Sie optional die Commitnachricht, und geben Sie eine Beschreibung an. Wählen Sie dann erneut Speichern und ausführen aus, um die Datei azure-pipelines.yml in Ihr Repository zu committen und einen Build zu starten.

  9. Auf der Buildausführungsseite werden Builddetails und der Fortschritt angezeigt. Wählen Sie Build unter Aufträge aus, um Ihre Pipeline in Aktion zu sehen.

    Screenshot: Link „Build“ auf der Auftragsausführungsseite

Pipelinedetails

Die Pipeline wird auf Grundlage der Docker-Containervorlage generiert. In der Buildphase wird der Docker v2-Task verwendet, um das Docker-Image zu erstellen und an die Containerregistrierung zu pushen.

Der Docker-Task verwendet eine Docker-Registrierungsdienstverbindung mit Dienstprinzipalauthentifizierung, um Ihrer Pipeline das Pushen von Images in Ihre Containerregistrierung zu ermöglichen. Die Docker-Containervorlage generiert diese Dienstverbindung beim Erstellen der Pipeline.

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

Bereinigen von Ressourcen

Wenn Sie die in diesem Tutorial erstellten Ressourcen nicht mehr verwenden, können Sie sie löschen, um weitere Gebühren zu vermeiden. Führen Sie den folgenden Cloud Shell-Befehl aus, um Ihre Ressourcengruppe und alle darin enthaltenen Ressourcen zu löschen.

az group delete --name myapp-rg