Partager via


Déployer un conteneur personnalisé vers Azure App Service avec Azure Pipelines

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Grâce à Azure Pipelines, vous pouvez créer, tester et déployer automatiquement votre application web dans un conteneur Azure App Service Web App sur Linux. Dans cet article, vous allez apprendre à utiliser des pipelines YAML ou Classic pour :

  • Générez et publiez une image Docker dans Azure Container Registry.
  • Créez une application web Azure.
  • Déployez un conteneur sur Azure App Service.
  • Déployer sur des emplacements de déploiement.

Prérequis

Produit Exigences
Azure DevOps - Organisation et projet Azure DevOps. Créez-en un gratuitement.
- Autorisations:
    - Pour accorder l’accès à tous les pipelines du projet : vous devez être membre du groupe Administrateurs de projet.
    - Pour créer des connexions de service : vous devez avoir le rôle Administrateur ou Créateur pour les connexions de service.
- Possibilité d’exécuter des pipelines sur des agents hébergés par Microsoft. Vous pouvez acheter un travail parallèle ou demander un niveau gratuit.
GitHub - Un compte GitHub .
Azur - Un Azure Container Registry. Créez un registre de conteneurs Azure si vous n’en avez pas déjà un.

Obtenir le code

Dupliquez l’exemple d’application suivant sur GitHub.

https://github.com/spring-guides/gs-spring-boot-docker.git

Générer une image Docker et la publier dans Azure Container Registry

Pour suivre cette section efficacement, vous devez disposer d’un registre de conteneurs Azure. Pour obtenir des informations détaillées, reportez-vous à la section des prérequis.

  1. Connectez-vous à votre organisation Azure DevOps et accédez à votre projet.

  2. Sélectionnez Pipelines, puis Nouveau pipeline.

  3. Quand vous êtes invité à indiquer l’emplacement de votre code source, Sélectionnez GitHub, puis sélectionnez votre dépôt.

  4. Sélectionnez le modèle de pipeline Docker : Générer et envoyer (push) une image sur Azure Container Registry.

    Capture d’écran de la sélection du modèle de pipeline Docker.

  5. Sélectionnez votre abonnement Azure, puis sélectionnez Continuer.

  6. Sélectionnez votre registre de conteneurs dans le menu déroulant, puis sélectionnez Valider et configurer.

    Capture d’écran de l’écran Valider et configurer Docker.

  7. Passez en revue le modèle YAML du pipeline, puis sélectionnez Enregistrer et exécuter pour générer et publier l’image Docker dans Azure Container Registry.

    trigger:
    - main
    
    resources:
    - repo: self
    
    variables:
        # Container registry service connection established during pipeline creation
        dockerRegistryServiceConnection: '{{ containerRegistryConnection.Id }}'
        imageRepository: 'javascriptdocker'
        containerRegistry: 'sampleappcontainerregistry.azurecr.io'
        dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
        tag: '$(Build.BuildId)'
    
        # Agent VM image name
        vmImageName: 'ubuntu-latest'
    
    stages:
    - stage: Build
        displayName: Build and push stage
        jobs:
        - job: Build
        displayName: Build
        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)
    
  8. Pour afficher l’image Docker publiée une fois l’exécution du pipeline terminée, accédez au registre de conteneurs dans le portail Azure, puis sélectionnez Référentiels.

    Capture d’écran de l’image Docker publiée dans Azure Container Registry.

  9. Pour déployer l’image à partir du registre de conteneurs, activez le compte d’utilisateur administrateur. Accédez au registre de conteneurs dans le portail Azure, puis sélectionnez Clés d’accès. Sélectionnez ensuite le bouton bascule pour activer l’utilisateur Administrateur.

Créer une application Web

  1. Accédez au portail Azure.

  2. Sélectionnez Créer un conteneur de ressources>, puis choisissez Application web pour conteneurs.

    Capture d’écran de la création d’une application web pour la ressource conteneurs.

  3. Entrez un nom pour votre nouvelle application web et créez un groupe de ressources. Sélectionnez Linux comme Système d’exploitation.

    Capture d’écran de la configuration de l’application web.

  4. Dans la section Plans tarifaires , sélectionnez le plan gratuit F1.

  5. Sélectionnez Examiner et créer. Passez en revue votre configuration et sélectionnez Créer lorsque vous avez terminé.

Déployer sur Web App for Containers

Dans ce code YAML, vous générez et poussez une image Docker sur un registre de conteneurs, puis vous la déployez sur Azure Web App pour conteneurs. Dans la phase de build, vous générez et poussez une image Docker sur un registre de conteneurs Azure avec la tâche Docker@2. La tâche AzureWebAppContainer@1 déploie l’image sur Web App pour conteneurs.


trigger:
- main

resources:
- repo: self

variables: 
  ## Add this under variables section in the pipeline
  azureSubscription: <Name of the Azure subscription>
  appName: <Name of the Web App>
  containerRegistry: <Name of the Azure container registry>
  dockerRegistryServiceConnection: '4fa4efbc-59af-4c0b-8637-1d5bf7f268fc'
  imageRepository: <Name of image repository>
  dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
  tag: '$(Build.BuildId)'

  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: Build and push stage
  jobs:
  - job: Build
    displayName: Build
    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)


    ## Add the below snippet at the end of your pipeline
    - task: AzureWebAppContainer@1
      displayName: 'Azure Web App on Container Deploy'
      inputs:
        azureSubscription: $(azureSubscription)
        appName: $(appName)
        containers: $(containerRegistry)/$(imageRepository):$(tag)

Déployer sur un emplacement de déploiement

Configurez le conteneur Azure Web App pour avoir plusieurs emplacements. Les slots vous permettent de déployer votre application en toute sécurité et de la tester avant de les mettre à disposition de vos clients. En savoir plus dans Créer des environnements intermédiaires.

L’extrait de code YAML suivant montre comment effectuer un déploiement vers un emplacement de préproduction, puis basculer vers un emplacement de production :

- task: AzureWebAppContainer@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appName: '<Name of the web app>'
    containers: $(containerRegistry)/$(imageRepository):$(tag)
    deployToSlotOrASE: true
    resourceGroupName: '<Name of the resource group>'
    slotName: staging

- task: AzureAppServiceManage@0
  inputs:
    azureSubscription: '<Azure service connection>'
    WebAppName: '<name of web app>'
    ResourceGroupName: '<name of resource group>'
    SourceSlot: staging
    SwapWithProduction: true

Questions fréquentes (FAQ)

Q : Comment trouver les informations d’identification de mon registre Docker ?

R : Accédez au portail Azure et sélectionnez votre application web pour conteneurs. Sélectionnez Configuration>Paramètres de l’application, puis sélectionnez l'option pour afficher la valeur.

Capture d’écran du portail Azure montrant comment rechercher les informations d’identification du Registre Docker.