Gyakorlat – Docker-tároló üzembe helyezése az Azure-ban
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.
Az Azure DevOpsban lépjen a Folyamatok elemre.
Válassza ki a folyamatot.
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.
Adja hozzá az alábbi kiemelt sort egy névvel ellátott
webRepository
tag
folyamatvá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ótbuildConfiguration
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
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.
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.
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.
A webalkalmazásnak az App Service-ben kell futnia.
Andy: Ez kiderült, nagyszerű! Azt hiszem, a tárolók bevezetése hatalmas győzelem lehet a csapatunk számára.