Delen via


Een aangepaste container implementeren in Azure-app Service met Azure Pipelines

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

Met Behulp van Azure Pipelines kunt u uw web-app bouwen, testen en automatisch implementeren in een Azure-app Service Web App-container in Linux. In dit artikel leert u hoe u YAML- of klassieke pijplijnen gebruikt voor het volgende:

  • Bouw en publiceer een Docker-image in de Azure Container Registry.
  • Een Azure-web-app maken.
  • Een container implementeren in Azure App Service.
  • Implementeren naar implementatieslots.

Vereisten

Product Eisen
Azure DevOps - Een Azure DevOps-organisatie en -project. Maak gratis een account.
- Machtigingen:
    - Als u toegang wilt verlenen tot alle pijplijnen in het project: u moet lid zijn van de groep Projectbeheerders.
    - Als u serviceverbindingen wilt maken: u moet de rol Beheerder of Maker hebben voor serviceverbindingen.
- Een vermogen om pijplijnen uit te voeren op agents die door Microsoft worden gehost. U kunt een parallelle taak aanschaffen of u kunt een gratis laag aanvragen.
GitHub - Een GitHub-account .
Azuur - Een Azure Container Registry. Maak een Azure-containerregister als u er nog geen hebt.

Code ophalen

Fork de volgende voorbeeld-app op GitHub.

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

Een Docker-image bouwen en publiceren naar Azure Container Registry

Als u deze sectie wilt voltooien, moet u een Azure Container Registry hebben. Raadpleeg de sectie vereisten voor meer informatie.

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project.

  2. Selecteer Pijplijnen en vervolgens Nieuwe pijplijn.

  3. Selecteer GitHub wanneer u wordt gevraagd om de locatie van uw broncode en selecteer vervolgens uw opslagplaats.

  4. Selecteer de pijplijnsjabloon Docker: build and push an image to Azure Container Registry.

    Schermopname van het selecteren van de Docker-pijplijnsjabloon.

  5. Selecteer uw Azure-abonnement en selecteer vervolgens Doorgaan.

  6. Selecteer uw containerregister in de vervolgkeuzelijst en selecteer vervolgens Valideren en configureren.

    Schermopname van het scherm Docker valideren en configureren.

  7. Controleer de YAML-sjabloon van de pijplijn, en selecteer Opslaan en uitvoeren om de Docker-image te bouwen en te publiceren naar de 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. Als u de gepubliceerde Docker-image wilt bekijken nadat de pijplijnuitvoering is voltooid, gaat u naar het containerregister in de Azure portal en selecteert u Repositories.

    Schermopname van de Docker-afbeelding die is gepubliceerd in de Azure Container Registry.

  9. Om de afbeelding uit het containerregister te ontplooien, schakelt u het beheerdersaccount in. Ga naar het containerregister in Azure Portal en selecteer Toegangssleutels. Selecteer vervolgens de wisselknop om de beheerdergebruiker in te schakelen.

Een web-app maken

  1. Ga naar Azure-portal.

  2. Selecteer Een resource maken>, Containers en kies vervolgens Web App for Containers.

    Schermopname van het maken van een web-app voor containersresource.

  3. Voer een naam in voor uw nieuwe web-app en maak een nieuwe resourcegroep. Selecteer Linux voor het besturingssysteem.

    Schermopname van het configureren van de web-app.

  4. Selecteer in de sectie Prijsplannen het gratis F1-abonnement.

  5. Selecteer Beoordelen en maken. Controleer uw configuratie en selecteer Maken wanneer u klaar bent.

Implementeren in Web App for Containers

In deze YAML bouwt en pusht u een Docker-afbeelding naar een containerregister en implementeert u deze vervolgens in Azure Web App voor Containers. In de buildfase bouwt en pusht u een Docker-image naar een Azure Container Registry met de Docker@2 taak. De AzureWebAppContainer@1 taak implementeert het image in Web App for Containers.


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)

Implementeren naar een implementatieslot

Configureer de Azure Web App-container voor meerdere slots. Met slots kunt u uw app veilig implementeren en testen voordat u deze beschikbaar maakt voor uw klanten. Meer informatie vindt u in faseringsomgevingen maken.

In het volgende YAML-fragment ziet u hoe u implementeert in een staging-slot en vervolgens wisselt naar een productieslot.

- 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

Veelgestelde vragen

V: Hoe kan ik mijn Docker-registerreferenties vinden?

A: Ga naar Azure Portal en selecteer uw Web App for Containers. Selecteer Configuratie>Applicatie-instellingen, en selecteer vervolgens om de waarde weer te geven.

Schermopname van Azure Portal waarin wordt getoond hoe u Docker-registerreferenties kunt vinden.