Erstellen und Pushen von Docker-Images in Azure Container Registry mithilfe von Docker-Vorlagen

Azure DevOps Services

In dieser exemplarischen Vorgehensweise erfahren Sie, wie Sie eine Continuous Integration-Pipeline einrichten, um eine containerisierte Anwendung zu erstellen. Neue Pull Requests lösen die Pipeline zum Erstellen und Veröffentlichen von Docker-Images in Azure Container Registry aus.

Voraussetzungen

Abrufen des Codes

Forken oder Klonen der pipeline-javascript-docker-Beispielanwendung:

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

Erstellen einer Containerregistrierung

  1. Melden Sie sich bei Azure an, und wählen Sie dann in der oberen rechten Ecke die Schaltfläche Azure Cloud Shell aus.

    Azure Cloud Shell button

  2. Führen Sie die folgenden Befehle aus, um eine Ressourcengruppe und eine Azure Container Registry-Instanz mithilfe der Azure CLI zu erstellen.

    # Create a resource group
    az group create --name myapp-rg --location eastus
    
    # Create a container registry
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    

Hinweis

Ein Container Registry-Name muss kleingeschrieben sein.

Sie können auch die Azure-Portalweb-UI verwenden, um Ihre Azure Container Registry-Instanz zu erstellen. Details finden Sie unter Erstellen einer Containerregistrierung.

Wichtig

Sie müssen das Administratorbenutzerkonto aktivieren, damit Sie ein Docker-Image aus einer ACR-Instanz bereitstellen können. Weitere Informationen finden Sie unter Containerregistrierungsauthentifizierung.

Erstellen der Pipeline

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie zu Ihrem Projekt.

  2. Wählen Sie Pipelines aus, und wählen Sie dann Neue Pipeline aus, um eine neue Pipeline zu erstellen.

    Create a new pipeline

  3. Wählen Sie GitHub YAML aus, und wählen Sie dann Azure Pipelines autorisieren aus, um die entsprechenden Berechtigungen für den Zugriff auf Ihr Repository zu gewähren.

  4. Möglicherweise werden Sie aufgefordert, sich bei GitHub anzumelden. Wenn ja, geben Sie Ihre GitHub-Anmeldeinformationen ein, und wählen Sie dann Ihr Repository aus der entsprechenden Liste aus.

  5. Wählen Sie auf der Registerkarte Konfigurieren die Aufgabe Docker – Erstellen und Pushen eines Images an Azure Container Registry aus.

    Build and push Docker images to Azure Container Registry

  6. Wählen Sie Ihr Azure-Abonnement und dann Weiter aus.

  7. Wählen Sie im Dropdownmenü Ihre Containerregistrierung aus, und geben Sie dann dem Containerimage einen Imagenamen.

  8. Wählen Sie Überprüfen und konfigurieren aus, wenn Sie fertig sind.

    A screenshot showing how to configure a docker pipeline to build and publish an image to Azure Container Registry

    Wenn Azure Pipelines Ihre Pipeline erstellt, wird Folgendes ausgeführt:

    • Erstellt eine Dienstverbindung für Docker-Registrierung, damit Ihre Pipeline Images in Ihre Containerregistrierung pushen kann.

    • Generiert eine Datei azure-pipelines.yml, die Ihre Pipeline definiert.

  9. Überprüfen Sie Ihre Pipeline-YAML, und wählen Sie dann Speichern und ausführen aus, wenn Sie fertig sind.

    Review your pipeline, save & run

  10. Fügen Sie eine Commitnachricht hinzu, und wählen Sie dann Speichern und ausführen aus, um Ihre Änderungen zu übernehmen und die Pipeline auszuführen.

  11. Wenn Ihre Pipeline ausgeführt wird, wählen Sie den Buildauftrag aus, um Ihre Pipeline in Aktion zu überwachen.

    Monitor builds

So erstellen wir Ihre Pipeline

Die Pipeline, die wir soeben im vorherigen Abschnitt erstellt haben, wurde aus der Docker-Containervorlage YAML generiert. In der Buildphase wird die Docker-AufgabeDocker@2 verwendet, um das Docker-Image zu erstellen und an die Containerregistrierung zu pushen.

- 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 diese Anwendung nicht weiter verwenden werden, können Sie die in diesem Tutorial erstellten Ressourcen löschen, um laufende Gebühren zu vermeiden. Führen Sie Folgendes aus, um Ihre Ressourcengruppe zu löschen.

az group delete --name myapp-rg