Utilisez Docker YAML pour compiler et pousser des images Docker vers Azure Container Registry.

Azure DevOps Services

Ce tutoriel vous montre comment utiliser un pipeline basé sur un modèle Docker d’Azure Pipelines pour compiler une application conteneurisée et la pousser vers Azure Container Registry. Le modèle configure un pipeline YAML d’intégration continue où les nouveaux changements dans le référentiel de code déclenchent le pipeline pour compiler et publier les images Docker mises à jour dans le registre.

Le pipeline de modèle de conteneur Docker utilise des agents hébergés par Microsoft et crée une connexion de service basée sur un principal de service vers Azure Container Registry. Pour un pipeline qui effectue un processus similaire en utilisant des agents auto-hébergés et une connexion de service que vous créez vous-même, veuillez consulter la section Générer et envoyer (push) des images Docker à Azure Container Registry.

Prérequis

  • Un compte Azure où vous avez la permission de créer et configurer des ressources. Si vous n’avez pas de compte Azure, inscrivez-vous pour un compte gratuit.

  • Une organisation et un projet Azure DevOps où vous avez la permission de créer des pipelines et de déployer des applications. Pour créer une organisation ou un projet, veuillez consulter la section Créer une organisation ou Créer un projet dans Azure DevOps.

  • Un compte GitHub.

    Important

    Lorsque vous utilisez GitHub dans les procédures suivantes, vous pourriez être invité à créer une connexion de service GitHub, à vous connecter à GitHub, à vous authentifier auprès des organisations GitHub, à installer Azure Pipelines ou à autoriser Azure Pipelines. Suivez les instructions à l’écran pour compléter le processus. Pour plus d’informations, veuillez consulter la section Accès aux référentiels GitHub.

Obtenir l’exemple d’application

Dans GitHub, fork ou clonez le référentiel Sample Docker et Kubernetes Node.JS app.

Créer un registre de conteneur

  1. Depuis le portail Azure, connectez-vous à Azure Cloud Shell en sélectionnant l’icône dans la barre de menu supérieure. Assurez-vous d’utiliser le shell Bash.

    Azure Cloud Shell

  2. Dans le Cloud Shell, exécutez les commandes suivantes pour créer un groupe de ressources et un Azure container registry en utilisant l’interface de ligne de commande Azure (CLI Azure). Le nom du Container Registry doit être en minuscules.

    az group create --name myapp-rg --location eastus
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    
  3. Pour déployer une image Docker dans le Azure container registry, vous devez activer le compte d’utilisateur administrateur pour le registre, qui est désactivé par défaut. Pour activer l’utilisateur administrateur de votre registre, utilisez le --admin-enabled paramètre avec la commande az acr update. Pour plus d’informations et d’instructions, veuillez consulter la section Compte Admin.

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

Alternativement, vous pouvez utiliser l’interface utilisateur du portail Azure pour créer votre Azure container registry. Pour les instructions, veuillez consulter la section Créer un conteneur. Activez le compte administrateur dans Propriétés après avoir créé le registre.

Créer le pipeline

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines>Nouveau pipeline ou Créer un pipeline si ce pipeline est le premier dans le projet.

    Capture d’écran montrant l’écran Créer un nouveau pipeline.

  2. Sélectionnez GitHub comme emplacement de votre code source.

  3. Sur l’écran Sélectionner un référentiel, sélectionnez votre référentiel de code d’exemple.

  4. Sur l’écran Configurer votre pipeline, sélectionnez le pipeline : Générer et envoyer (push) une image vers le pipeline Azure Container Registry.

    Capture d’écran montrant la sélection du pipeline Générer et envoyer l’image Docker à Azure Container Registry.

  5. Sur l’écran Docker, sélectionnez votre abonnement Azure puis sélectionnez Continuer.

  6. Sélectionnez votre Container Registry dans le menu déroulant, fournissez un Nom d’image, puis sélectionnez Valider et configurer.

    Capture d’écran montrant comment configurer un pipeline Docker pour compiler et publier une image vers Azure Container Registry.

    Azure Pipelines génère un fichier azure-pipelines.yml qui définit votre pipeline.

  7. Examinez le code dans azure-pipelines.yml, puis sélectionnez Enregistrer et exécuter.

    Capture d’écran du bouton Enregistrer et exécuter dans un nouveau pipeline YAML.

  8. Modifiez éventuellement le Commit message et fournissez une description. Ensuite, sélectionnez à nouveau Enregistrer et exécuter pour valider le fichier azure-pipelines.yml dans votre référentiel et démarrer une compilation.

  9. La page d’exécution de la compilation affiche les détails et la progression de la compilation. Pour voir votre pipeline en action, sélectionnez Build sous Jobs (Tâches).

    Capture d’écran montrant le lien Build sur la page d’exécution du job.

Détails du pipeline

Le pipeline est généré à partir du modèle de conteneur Docker. La phase de compilation utilise la tâche Docker v2 pour compiler et pousser votre image Docker vers le registre de conteneurs.

La tâche Docker utilise une connexion de service de registre Docker avec une authentification par principal de service pour permettre à votre pipeline de pousser des images vers votre registre de conteneurs. Le modèle de conteneur Docker génère cette connexion de service lorsqu’il crée le 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)

Nettoyer les ressources

Lorsque vous avez terminé d’utiliser les ressources créées dans ce tutoriel, vous pouvez les supprimer pour éviter d’encourir des frais supplémentaires. Exécutez la commande Cloud Shell suivante pour supprimer votre groupe de ressources et toutes les ressources qu’il contient.

az group delete --name myapp-rg