Cvičení – nasazení kontejneru Dockeru do Azure

Dokončeno

Váš projekt obsahuje pipelinu pro vydání, která sestavuje projekty v rámci řešení a nasazuje webovou aplikaci do služby App Service. Nyní je čas aktualizovat build pipeline a nasadit projekt jako kontejnerovou aplikaci.

V této lekci:

  • Definujte některé proměnné pipeline, aby bylo snazší udržovat pipelinu buildu.
  • Nahraďte stávající úlohy sestavení jednotným úkolem pro sestavení a nasdílení kontejneru Dockeru.
  • Nahraďte stávající úkol Nasazení za úkol, který aktualizuje webovou aplikaci App Service novým kontejnerovým obrazem.
  • Uložte kanál, který aktivuje sestavení a vydání.

Definování proměnných, které se mají sdílet v rámci pipeliny

Tady přidáte novou proměnnou kanálu do existujícího kanálu YAML definovaného v azure-pipelines.yml.

  1. V Azure DevOps přejděte na Kanály.

  2. Vyberte kanál.

  3. Vyberte Upravit. Ujistěte se, že je hlavní větev nastavena na tím, že ji vyberete z rozevírací nabídky. Tím se zobrazí váš azure-pipelines.yml soubor.

  4. Přidejte zvýrazněný řádek níže pro přidání proměnných potrubí pojmenovaných webRepository a tag. Ty se použijí ve více úlohách k jednoznačné identifikaci konkrétní verze odkazovaného kontejneru. Můžete také odebrat proměnnou buildConfiguration; Už ho nebudete potřebovat.

    trigger:
    - '*'
    
    variables:
      buildConfiguration: 'Release'
      webRepository: 'web'
      tag: '$(Build.BuildId)'
    

Nahrazení úloh fáze sestavení

Ondra: Myslím, že už žádné z těchto úkolů sestavení nepotřebujeme, protože soubor Dockerfile ve složce projektu už definuje požadované sestavení. Neměl jsem ale šanci zjistit, co můžeme použít k sestavení image pomocí souboru Dockerfile. Nějaké nápady?

Mara: Jen jsem to hledal. Zdá se, že by měl být schopen sestavit kontejner a dokonce ho odeslat do úložiště pomocí jediné úlohy. Teď ho přidáme.

Úloha Dockeru

Úlohu Dockeru můžete použít k sestavení a nasazení imagí Dockeru. Nahraďte celou fázi sestavení fragmentem kódu YAML níže.

  • příkaz: Určuje příkaz Dockeru, který se má spustit.
  • buildContext: Určuje cestu k kontextu sestavení.
  • repository: Určuje název úložiště.
  • dockerfile: Určuje cestu k souboru Dockerfile.
  • containerRegistry: Určuje název připojení služby registru Dockeru.
  • tags: Určuje seznam značek na samostatných řádcích. Tyto značky se používají v příkazech build, push a buildAndPush.
- stage: 'Build'
  displayName: 'Build and push'
  jobs:  
  - job: 'Build'
    displayName: 'Build job'
    pool:
      vmImage: 'ubuntu-20.04'
    steps:
    - task: Docker@2
      displayName: 'Build and push the image to container registry'
      inputs:
        command: buildAndPush
        buildContext: $(Build.Repository.LocalPath)
        repository: $(webRepository)
        dockerfile: '$(Build.SourcesDirectory)/Tailspin.SpaceGame.Web/Dockerfile'
        containerRegistry: 'Container Registry Connection'
        tags: |
          $(tag)

Nahrazení úlohy fáze nasazení

Ondra: No, zdá se to docela jednoduché. Teď stačí najít úlohu, která službě App Service dá pokyn, aby používala nově nasdílenou verzi image kontejneru.

Mara: Už jsem na tom. Nasazení sestavení do Azure Pipelines se trochu liší, ale přesto je dostatečně přímé, abychom mohli úlohu provést v jedné úloze. Teď ho přidáme.

Úloha aplikace Azure Web pro kontejnery

Úloha Azure Web App for Container je navržená tak, aby nasadí kontejnery Dockeru do služby Azure App Service. Nahraďte celou fázi nasazení fragmentem kódu YAML níže.

  • appName: Určuje název existující služby Azure App Service.
  • azureSubscription: Určuje název předplatného Azure Resource Manageru pro nasazení.
  • imageName: Určuje plně kvalifikovaný název image kontejneru; například myregistry.azurecr.io/nginx:latest nebo python:3.7.2-alpine/.
- stage: 'Deploy'
  displayName: 'Deploy the container'
  dependsOn: Build
  jobs:
  - job: 'Deploy'
    displayName: 'Deploy job'
    pool:
      vmImage: 'ubuntu-20.04'
    variables:
    - group: Release
    steps:
    - task: AzureWebAppContainer@1
      inputs:
       appName: $(WebAppName)
       azureSubscription: 'Resource Manager - Tailspin - Space Game'
       imageName: $(RegistryName)/$(webRepository):$(build.buildId)

Uložení kanálu pro aktivaci sestavení a vydání

  1. V pravém horním rohu stránky vyberte Ověřit a uložit . Zadejte zprávu ke commitu a potvrďte volbou Uložit.

  2. Vyberte Spustit a ujistěte se, že je vaše větev nastavená na hlavní. Až budete hotovi, vyberte Spustit .

  3. Vyberte svůj kanál a zobrazte protokoly. Po úspěšném sestavení vyberte úlohu AzureWebAppContainer a pak výběrem adresy URL aplikace služby App Service zobrazte nasazenou webovou aplikaci.

    Snímek obrazovky se službou Azure Pipelines zobrazující umístění adresy URL webu

  4. Měla by se zobrazit vaše webová aplikace spuštěná ve službě App Service.

    Snímek obrazovky s webem Space Game

Andy: To se ukázalo skvěle! Myslím, že přijetí kontejnerů by pro náš tým mohlo být obrovskou výhrou.