Ćwiczenie — wdrażanie kontenera platformy Docker na platformie Azure
Twój projekt zawierał potok wydania, który kompiluje projekty w rozwiązaniu i wdraża aplikację internetową w usłudze App Service. Teraz nadszedł czas, aby zaktualizować kompilację potoku i wdrożyć projekt jako kontener.
W tej jednostce wykonasz:
- Zdefiniuj niektóre zmienne ciągu budowania, aby ułatwić konserwację ciągu kompilacji.
- Zastąp istniejące zadania Build ujednoliconym zadaniem kompilowania i wypychania kontenera platformy Docker.
- Zastąp istniejące zadanie Deploy zadaniem, które aktualizuje aplikację internetową usługi App Service przy użyciu nowego obrazu kontenera.
- Zapisz piel trakt, aby uruchomić kompilację i wydanie.
Zdefiniuj zmienne do udostępnienia w potoku
W tym miejscu dodasz nową zmienną potoku do istniejącego potoku YAML zdefiniowanego w azure-pipelines.yml.
W usłudze Azure DevOps przejdź do Pipelines.
Wybierz rurociąg.
Wybierz Edytuj. Upewnij się, że gałąź jest ustawiona na główną, wybierając ją z menu rozwijanego. Spowoduje to wyświetlenie pliku azure-pipelines.yml.
Dodaj wyróżniony wiersz poniżej, aby dodać zmienne potoku o nazwie
webRepository
itag
. Będą one używane w wielu zadaniach w celu unikatowego zidentyfikowania określonej wersji przywoływanego kontenera. Można również usunąć zmiennąbuildConfiguration
; nie będzie już potrzebny.trigger: - '*' variables: buildConfiguration: 'Release' webRepository: 'web' tag: '$(Build.BuildId)'
Zastąp zadania etapu kompilacji
Andy: nie sądzę, że potrzebujemy już żadnego z tych zadań kompilacji, ponieważ plik Dockerfile w folderze projektu już definiuje odpowiednią kompilację. Nie miałem jednak szansy zobaczyć, czego możemy użyć do skompilowania obrazu przy użyciu pliku Dockerfile. Jakieś pomysły?
Mara: po prostu szukałam tego. Wygląda na to, że można zbudować kontener, a nawet wypchnąć go do repozytorium za pomocą jednego zadania. Dodajmy ją teraz.
Zadanie platformy Docker
Można użyć zadania Docker do tworzenia i wdrażania obrazów Docker. Zastąp cały etap Build poniższym fragmentem kodu YAML.
- polecenie: określa polecenie Dockera, które ma zostać uruchomione.
- buildContext: określa ścieżkę do kontekstu kompilacji.
- repozytorium: określa nazwę repozytorium.
- dockerfile: określa ścieżkę do pliku Dockerfile.
- containerRegistry: określa nazwę połączenia usługi rejestru platformy Docker.
- tagów: określa listę tagów w osobnych wierszach. Te tagi są używane w poleceniach kompilacji, wypychania i kompilacjiAndPush.
- 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)
Zastąpić zadanie etapu wdrażania
Andy: Cóż, to wydaje się dość proste. Teraz musimy znaleźć zadanie, które spowoduje, że usługa App Service będzie używać nowo przesłanej wersji obrazu kontenera.
Mara: jestem już na nim. To nieco inny proces niż wdrażanie kompilacji w usłudze Azure Pipelines, ale nadal na tyle bezpośredni, że możemy wykonać zadanie jedną operacją. Dodajmy ją teraz.
Zadanie usługi Azure Web App for Container
Zadanie Azure Web App for Container jest przeznaczone do wdrażania kontenerów platformy Docker w usłudze Azure App Service. Zastąp cały etap Deploy poniższym fragmentem YAML.
- appName: określa nazwę istniejącej usługi Azure App Service.
- azureSubscription: określa nazwę subskrypcji usługi Azure Resource Manager dla wdrożenia.
-
imageName: określa w pełni kwalifikowaną nazwę obrazu kontenera; na przykład
myregistry.azurecr.io/nginx:latest
lubpython: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)
Zapisz potok, aby wyzwolić kompilację i wdrożenie
Wybierz Zapisz z prawego górnego rogu strony. Wpisz komunikat zatwierdzenia i wybierz pozycję Zapisz, aby potwierdzić.
Wybierz opcję Uruchomi upewnij się, że gałąź jest ustawiona na główną. Po zakończeniu wybierz Uruchom.
Wybierz potok danych, aby wyświetlić dzienniki. Po pomyślnym zakończeniu kompilacji wybierz zadanie AzureWebAppContainer, a następnie wybierz adres URL aplikacji w usłudze App Service , aby wyświetlić wdrożoną aplikację internetową.
Powinieneś zobaczyć swoją aplikację internetową działającą na usłudze App Service.
Andy: To okazało się wspaniałe! Myślę, że przyjęcie kontenerów może być ogromną wygraną dla naszego zespołu.