Gyakorlat – Docker-tároló üzembe helyezése az Azure-ban

Befejeződött

A projekt egy kiadási folyamattal rendelkezik, amely létrehozza a projekteket a megoldásban, és üzembe helyezi a webalkalmazást az App Service-ben. Most itt az ideje, hogy frissítse a folyamat buildjét, és helyezze üzembe a projektet tárolóként.

Ebben az egységben a következőket sajátíthatja el:

  • Definiáljon néhány folyamatváltozót, hogy a buildelési folyamat könnyebben karbantartható legyen.
  • Cserélje le a meglévő buildelési feladatokat egy egységes feladatra a Docker-tároló létrehozásához és leküldéséhez.
  • Cserélje le a meglévő üzembe helyezési feladatot egy olyan feladatra, amely frissíti az App Service Web App alkalmazást az új tárolólemezképre.
  • Mentse a folyamatot egy build és kiadás aktiválásához.

A folyamaton belül megosztandó változók meghatározása

Itt egy új folyamatváltozót fog hozzáadni az azure-pipelines.yml fájlban definiált meglévő YAML-folyamathoz.

  1. Az Azure DevOpsban lépjen a Folyamatok elemre.

  2. Válassza ki a folyamatot.

  3. Válassza a Szerkesztés lehetőséget. A legördülő menüből kiválasztva győződjön meg arról, hogy az ág főként van beállítva. Ezzel megjelenik az azure-pipelines.yml fájl.

  4. Adja hozzá az alábbi kiemelt sort egy névvel ellátott webRepository tagfolyamatváltozó hozzáadásához. Ezek több tevékenységben is használhatók a hivatkozott tároló adott verziójának egyedi azonosításához. A változót buildConfiguration is eltávolíthatja, már nincs rá szüksége.

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

A buildelési szakasz feladatainak cseréje

Andy: Azt hiszem, már nincs szükségünk ezekre a buildelési feladatokra, mert a projektmappában lévő Dockerfile már meghatározza a kívánt buildet. Azonban még nem volt lehetőségem látni, hogy mire használhatjuk a rendszerképet egy Dockerfile használatával. Van ötlete?

Mara: Én csak néztem, hogy fel. Úgy tűnik, hogy képesnek kell lennie a tároló létrehozására, és akár egyetlen feladattal is le kell küldenie az adattárba. Most vegyük fel.

Docker task

A Docker-feladat segítségével Docker-rendszerképeket hozhat létre és helyezhet üzembe. Cserélje le a teljes buildelési szakaszt az alábbi YAML-kódrészletre.

  • parancs: A futtatni kívánt Docker-parancsot adja meg.
  • buildContext: Megadja a buildkörnyezet elérési útját.
  • adattár: Az adattár nevét adja meg.
  • dockerfile: A Dockerfile elérési útját adja meg.
  • containerRegistry: A Docker beállításjegyzék-szolgáltatáskapcsolatának nevét adja meg.
  • címkék: A címkék listáját adja meg külön sorokban. Ezek a címkék a buildelési, leküldéses és buildelésiAndPush parancsokban használatosak.
- 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)

Az üzembe helyezési szakasz feladatának cseréje

Andy: Nos, ez elég egyszerűnek tűnik. Most már csak egy olyan feladatra van szükségünk, amely arra utasítja az App Service-t, hogy használja a tárolólemezkép újonnan leküldett verzióját.

Már rajta vagyok. Ez egy kicsit más, mint egy build üzembe helyezése az Azure Pipelinesban, de még mindig elég közvetlen ahhoz, hogy egy feladatban elvégezzük a feladatot. Most vegyük fel.

Azure Web App for Container feladat

Az Azure Web App for Container feladat célja Docker-tárolók üzembe helyezése Azure-alkalmazás Szolgáltatásban. Cserélje le a teljes üzembe helyezési szakaszt az alábbi YAML-kódrészletre.

  • appName: Egy meglévő Azure-alkalmazás szolgáltatás nevét adja meg.
  • azureSubscription: Az üzembe helyezéshez szükséges Azure Resource Manager-előfizetés nevét adja meg.
  • imageName: A tároló teljes rendszerképének nevét adja meg, myregistry.azurecr.io/nginx:latest python:3.7.2-alpine/például.
- 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)

Build és kiadás aktiválásához mentse a folyamatot

  1. Válassza a Lap jobb felső sarkában található Mentés lehetőséget. Írja be a véglegesítési üzenetet, és a megerősítéshez válassza a Mentés lehetőséget.

  2. Válassza a Futtatás lehetőséget, és győződjön meg arról, hogy az ág főre van állítva. Ha elkészült, válassza a Futtatás lehetőséget.

  3. Válassza ki a folyamatot a naplók megtekintéséhez. A build sikeres végrehajtása után válassza ki az AzureWebAppContainer feladatot, majd válassza ki az App Service-alkalmazás URL-címét az üzembe helyezett webalkalmazás megtekintéséhez.

    Screenshot of Azure Pipelines showing the location of the website URL.

  4. A webalkalmazásnak az App Service-ben kell futnia.

    Screenshot of the Space Game website.

Andy: Ez kiderült, nagyszerű! Azt hiszem, a tárolók bevezetése hatalmas győzelem lehet a csapatunk számára.