Nasazení vlastního kontejneru do služby Aplikace Azure Service pomocí Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Pomocí Služby Azure Pipelines můžete vytvářet, testovat a automaticky nasazovat webovou aplikaci do kontejneru webové aplikace služby Aplikace Azure v Linuxu. V tomto článku se dozvíte, jak používat kanály YAML nebo Classic k:

  • Sestavení a publikování image Dockeru do služby Azure Container Registry
  • Vytvoření webové aplikace Azure
  • Nasazení kontejneru do služby Aplikace Azure Service
  • Nasazení do slotů nasazení

Požadavky

Získání kódu

Fork následující ukázkové aplikace na GitHubu

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

Sestavení a publikování image Dockeru do služby Azure Container Registry

K úspěšnému dokončení této části musíte mít službu Azure Container Registry. Podrobnosti najdete v části Požadavky.

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Kanály a pak Nový kanál.

  3. Po zobrazení výzvy k zadání umístění zdrojového kódu vyberte GitHub a pak vyberte úložiště.

  4. Vyberte Docker: sestavte a nasdílejte image do šablony kanálu služby Azure Container Registry.

    Výběr šablony kanálu Dockeru

  5. Vyberte své předplatné Azure a pak vyberte Pokračovat.

  6. V rozevírací nabídce vyberte registr kontejneru a pak vyberte Ověřit a nakonfigurovat.

    Ověření a konfigurace Dockeru

  7. Zkontrolujte šablonu YAML kanálu a pak vyberte Uložit a spustit , abyste sestavili a publikovali image Dockeru do služby 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. Pokud chcete po dokončení spuštění kanálu zobrazit publikovanou image Dockeru, přejděte na webu Azure Portal do svého registru kontejneru a pak vyberte Úložiště.

    Image Dockeru publikovaná ve službě Azure Container Registry

  9. Pokud chcete nasadit image z registru kontejneru, musíte povolit uživatelský účet správce. Přejděte do registru kontejneru na webu Azure Portal a vyberte Přístupové klíče. V dalším kroku vyberte přepínací tlačítko pro povolení Správa uživatele.

    Povolení Správa uživatele

Vytvoření webové aplikace

  1. Přejděte na Azure Portal.

  2. Vyberte Vytvořit kontejnery prostředků>a pak zvolte Web App for Containers.

    Vytvoření webové aplikace pro prostředky kontejnerů

  3. Zadejte název nové webové aplikace a vytvořte novou skupinu prostředků. Vyberte Linux pro operační systém.

    Konfigurace webové aplikace

  4. V části Cenové plány zvolte plán F1 Free.

  5. Vyberte Zkontrolovat a vytvořit. Zkontrolujte konfiguraci a po dokončení vyberte Vytvořit .

Nasazení do služby Web App for Containers

V tomto YAML sestavíte a nasdílíte image Dockeru do registru kontejneru a pak ji nasadíte do Azure Web App for Containers. Ve fázi sestavení sestavíte a nasdílíte image Dockeru do služby Azure Container Registry pomocí úlohy Docker@2. Úloha AzureWebAppContainer@1 nasadí image do služby 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)

Nasazení do slotu nasazení

Kontejner webové aplikace Azure můžete nakonfigurovat tak, aby měl více slotů. Sloty umožňují bezpečně nasadit aplikaci a otestovat ji před tím, než ji zpřístupní vašim zákazníkům. Další podrobnosti najdete v tématu Vytváření přípravných prostředí .

Následující fragment kódu YAML ukazuje, jak se nasadí do přípravného slotu a pak se prohodí do produkčního slotu:

- 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

Často kladené dotazy

Otázka: Jak najdu přihlašovací údaje registru Dockeru?

A: Přejděte na web Azure Portal a pak vyberte webovou aplikaci pro kontejnery. Vyberte Nastavení konfigurační>aplikace a kliknutím zobrazte hodnotu.

Snímek obrazovky znázorňující, jak najít přihlašovací údaje registru Dockeru