Guide de démarrage rapide : générer une image conteneur pour déployer des applications à l’aide d’Azure Pipelines
Azure DevOps Services
Ce guide de démarrage rapide montre comment créer une image conteneur pour le déploiement d’applications à l’aide d’Azure Pipelines. Pour générer cette image, tout ce dont vous avez besoin est un fichier Dockerfile dans votre référentiel. Vous pouvez générer des conteneurs Linux ou Windows, en fonction de l’agent que vous utilisez dans votre pipeline.
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Un compte GitHub. Si vous n’en avez pas, inscrivez-vous gratuitement.
- Un agent Windows ou Linux du pipeline Azure avec Docker installé.
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Un compte GitHub. Si vous n’en avez pas, inscrivez-vous gratuitement.
Dupliquer (fork) l’exemple de référentiel
Dans votre navigateur, accédez à l’exemple de référentiel suivant et dupliquez-le dans votre compte GitHub.
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Générer une image Linux ou Windows
Connectez-vous à votre organisation Azure DevOps, et accédez à votre projet.
Accédez à Pipelines, puis sélectionnez Nouveau pipeline ou Créer un pipeline si vous créez le premier pipeline du projet.
Sélectionnez GitHub comme emplacement de votre code source.
Sélectionnez votre référentiel, puis sélectionnez Pipeline de démarrage.
- Si vous êtes redirigé vers GitHub pour vous connecter, entrez vos informations d’identification GitHub.
- Si vous êtes redirigé vers GitHub pour installer l’application Azure Pipelines, sélectionnez Approuver et installer.
Remplacez le contenu du fichier azure-pipelines.yml par le code suivant. Selon que vous déployez une application Linux ou Windows, veillez à définir
vmImage
respectivement surubuntu-latest
ouwindows-latest
.trigger: - main pool: vmImage: 'ubuntu-latest' variables: imageName: 'pipelines-javascript-docker' steps: - task: Docker@2 displayName: Build an image inputs: repository: $(imageName) command: build Dockerfile: app/Dockerfile
Lorsque vous avez terminé, sélectionnez Enregistrer et exécuter.
Lorsque vous ajoutez le fichier azure-pipelines.yml à votre référentiel, vous êtes invité à ajouter un message de validation. Entrez un message, puis sélectionnez Enregistrer et exécuter.
Lorsque vous utilisez des agents auto-hébergés, assurez-vous que Docker est installé sur l’hôte de l’agent et que le moteur/démon Docker s’exécute avec des privilèges élevés.
Pour générer l’image, Docker doit être installé sur l’hôte de l’agent et le moteur/démon Docker doit s’exécuter avec des privilèges élevés. Procédez comme suit pour créer votre pipeline à l’aide de l’éditeur de pipeline YAML.
- Accédez à votre collection et créez un projet.
- Dans votre projet, sélectionnez Pipelines.
- Sélectionnez Créer un pipeline.
- Sélectionnez GitHub Enterprise Server comme emplacement de votre code source.
- Si ce n’est déjà fait, autorisez Azure Pipelines à se connecter à votre compte GitHub Enterprise Server.
- Sélectionnez Se connecter à GitHub Enterprise Server.
- Entrez les détails de votre compte, puis sélectionnez Vérifier et enregistrer.
- Sélectionnez votre dépôt. Si vous êtes redirigé vers GitHub pour installer l’application Azure Pipelines, sélectionnez Approuver et installer.
- Pour configurer votre pipeline, sélectionnez le modèle Générer une image Docker.
- Dans l’éditeur de pipelines YAML, remplacez le contenu du fichier YAML par le code suivant. Remplacez le nom du pool par le nom du pool qui contient votre agent auto-hébergé avec la fonctionnalité Docker.
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
trigger:
- main
pool:
name: default
demands: docker
variables:
imageName: 'pipelines-javascript-docker'
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'
- Sélectionnez Enregistrer et exécuter.
- Sur la page Enregistrer et exécuter, sélectionnez une nouvelle fois Enregistrer et exécuter.
Pour plus d’informations sur la création d’images Docker, consultez la tâche Docker utilisée par cet exemple d’application. Vous pouvez également appeler directement des commandes Docker à l’aide d’une tâche de ligne de commande.
Les images conteneur sont générées et stockées sur l’agent. Vous pouvez envoyer votre image vers Google Container Registry, Docker Hub ou Azure Container Registry. Pour plus d’informations, consultez Envoyer (push) une image vers Docker Hub ou Google Container Registry ou Envoyer (push) une image vers Azure Container Registry.
Nettoyer les ressources
Si vous ne prévoyez pas de continuer à utiliser cette application, supprimez votre pipeline et votre référentiel de code.
Questions fréquentes (FAQ)
Quels agents puis-je utiliser pour créer des images conteneur ?
Vous pouvez créer des images conteneur Linux à l’aide d’agents Ubuntu hébergés par Microsoft ou d’agents auto-hébergés sur la plateforme Linux.
Vous pouvez créer des images conteneur Windows à l’aide d’agents Windows hébergés par Microsoft ou d’agents auto-hébergés sur la plateforme Windows. Tous les agents basés sur la plateforme Windows hébergés par Microsoft sont fournis avec le moteur Moby et le client nécessaires pour les builds Docker.
Actuellement, vous ne pouvez pas utiliser les agents macOS hébergés par Microsoft pour créer des images conteneur, car le moteur Moby nécessaire à la génération des images n’est pas préinstallé sur ces agents.
Pour plus d’informations, consultez les options d’agent Windows et Linux disponibles avec les agents hébergés par Microsoft.
Quelles images Docker préalablement mises en cache sont disponibles sur les agents hébergés ?
Pour éviter de passer trop de temps à extraire des images Docker pour chaque tâche à partir du registre de conteneurs, certaines images couramment utilisées sont préalablement mises en cache sur des agents hébergés par Microsoft.
Comment faire pour définir la variable BuildKit pour mes builds Docker ?
BuildKit introduit des améliorations de build autour des performances, de la gestion du stockage, du fonctionnement des fonctionnalités et de la sécurité. BuildKit n’est actuellement pas pris en charge sur les hôtes Windows.
Pour activer les builds Docker à l’aide de BuildKit, définissez la variable DOCKER_BUILDKIT.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
imageName: 'pipelines-javascript-docker'
DOCKER_BUILDKIT: 1
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: app/Dockerfile
Comment utiliser un agent auto-hébergé ?
Docker doit être installé et le moteur/démon doit s’exécuter sur l’hôte de l’agent. Si Docker n’est pas installé sur l’hôte de l’agent, vous pouvez ajouter la tâche du programme d’installation de Docker à votre pipeline. Vous devez ajouter la tâche du programme d’installation de Docker avant la tâche Docker.
Comment créer une build Docker basée sur un script au lieu d’utiliser la tâche Docker ?
Vous pouvez utiliser la commande build
ou toute autre commande Docker.
docker build -f Dockerfile -t foobar.azurecr.io/hello:world .
Cette commande crée une image équivalente à une image générée avec la tâche Docker. En interne, la tâche Docker appelle le fichier binaire Docker sur un script et réunit quelques commandes supplémentaires pour offrir quelques avantages supplémentaires. En savoir plus sur la tâche Docker.
Puis-je réutiliser la mise en cache de calque pendant les builds sur Azure Pipelines ?
Si vous utilisez des agents hébergés par Microsoft, chaque tâche est distribuée à une machine virtuelle nouvellement provisionnée, en fonction de l’image générée à partir des modèles du référentiel azure-pipelines-image-generation. Ces machines virtuelles sont nettoyées une fois le travail terminé. Cette durée de vie éphémère empêche la réutilisation de ces machines virtuelles pour les travaux suivants et la réutilisation des calques Docker mis en cache. Pour contourner ce problème, vous pouvez configurer une build à plusieurs index qui produit deux images et les envoie (push) à un registre d’images à un stade précoce. Vous pouvez ensuite indiquer à Docker d’utiliser ces images comme source de cache avec l’argument --cache-from
.
Si vous utilisez des agents autohébergés, vous pouvez mettre en cache des calques Docker sans solution de contournement, car le problème de durée de vie éphémère ne s’applique pas à ces agents.
Comment faire créer des images conteneur Linux pour des architectures autres que x64 ?
Lorsque vous utilisez des agents Linux hébergés par Microsoft, vous créez des images conteneur Linux pour l’architecture x64. Pour créer des images pour d’autres architectures, telles que le processeur x86 ou ARM, vous pouvez utiliser un émulateur de machine tel que QEMU.
Les étapes suivantes montrent comment créer une image conteneur de processeur ARM à l’aide de QEMU :
Créez votre fichier Dockerfile avec une image de base qui correspond à l’architecture cible :
FROM arm64v8/alpine:latest
Exécutez le script suivant dans votre travail avant de générer l’image :
# register QEMU binary - this can be done by running the following image docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # build your image
Pour plus d’informations, consultez qemu-user-static sur GitHub.
Comment faire pour exécuter des tests et publier des résultats de test pour les applications conteneurisées ?
Pour obtenir différentes options sur le test d’applications conteneurisées et la publication des résultats de test qui en découlent, consultez la tâche de publication des résultats des tests.
Étapes suivantes
Après avoir généré votre image conteneur, envoyez l’image à Azure Container Registry, Docker Hub ou Google Container Registry. Pour savoir comment envoyer une image à un registre de conteneurs, passez à l’un des articles suivants :