Udostępnij za pośrednictwem


Wdrażanie niestandardowego kontenera w Azure App Service przy użyciu Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Za pomocą Azure Pipelines można budować, testować i automatycznie wdrażać aplikację internetową w kontenerze usługi Azure App Service Web App na systemie Linux. W tym artykule dowiesz się, jak używać potoków YAML lub klasycznych do:

  • Kompilowanie i publikowanie obrazu platformy Docker w usłudze Azure Container Registry.
  • Tworzenie aplikacji internetowej platformy Azure.
  • Wdrażanie kontenera w usłudze Azure App Service.
  • Wdrażanie w miejscach wdrożenia.

Wymagania wstępne

produkt Wymagania
Azure DevOps — Organizacja i projekt usługi Azure DevOps. Utwórz je bezpłatnie.
Uprawnienia: -
    - Aby udzielić dostępu do wszystkich linii w projekcie: musisz być członkiem Grupy Administratorzy Projektu .
    - Aby utworzyć połączenia usług: musisz mieć rolę Administrator lub Twórca dla połączeń usług.
— Możliwość uruchamiania pipeline'ów na agentach hostowanych przez firmę Microsoft. Możesz kupić zadanie równoległe lub poprosić o bezpłatny poziom.
Usługa GitHub — Konto GitHub .
Błękit — Usługa Azure Container Registry. Utwórz rejestr kontenerów platformy Azure, jeśli jeszcze go nie masz.

Uzyskiwanie kodu

Sforkuj następującą przykładową aplikację na GitHubie.

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

Kompilowanie i publikowanie obrazu platformy Docker w usłudze Azure Container Registry

Aby ukończyć tę sekcję pomyślnie, musisz mieć usługę Azure Container Registry. Szczegółowe informacje można znaleźć w sekcji wymagań wstępnych.

  1. Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.

  2. Wybierz pozycję Potoki, a następnie pozycję Nowy potok.

  3. Wybierz pozycję GitHub po wyświetleniu monitu o lokalizację kodu źródłowego, a następnie wybierz repozytorium.

  4. Wybierz szablon potoku docker: build and push an image to Azure Container Registry pipeline (Tworzenie i wypychanie obrazu do potoku usługi Azure Container Registry ).

    Zrzut ekranu wybierania szablonu potoku Docker.

  5. Wybierz subskrypcję platformy Azure, a następnie wybierz pozycję Kontynuuj.

  6. Wybierz rejestr kontenerów z menu rozwijanego, a następnie wybierz pozycję Weryfikuj i skonfiguruj.

    Zrzut ekranu przedstawiający ekran Weryfikowanie i konfigurowanie platformy Docker.

  7. Przejrzyj szablon YAML potoku, a następnie wybierz pozycję Zapisz i uruchom, aby zbudować i opublikować obraz Docker w 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. Aby wyświetlić opublikowany obraz Docker po zakończeniu procesu potoku, przejdź do rejestru kontenerów w portalu Azure, a następnie wybierz pozycję Repozytoria.

    Zrzut ekranu przedstawiający obraz platformy Docker opublikowany w usłudze Azure Container Registry.

  9. Aby wdrożyć obraz z rejestru kontenerów, włącz konto użytkownika administratora. Przejdź do rejestru kontenerów w witrynie Azure Portal i wybierz pozycję Klucze dostępu. Następnie wybierz przycisk przełącznika, aby włączyć użytkownika administratora.

Tworzenie aplikacji internetowej

  1. Przejdź do witryny Azure Portal.

  2. Wybierz Utwórz zasób>, a następnie wybierz Web App for Containers.

    Zrzut ekranu przedstawiający tworzenie aplikacji internetowej dla zasobu kontenerów.

  3. Wprowadź nazwę nowej aplikacji internetowej i utwórz nową grupę zasobów. Wybierz pozycję Linux dla systemu operacyjnego.

    Zrzut ekranu przedstawiający konfigurowanie aplikacji internetowej.

  4. W sekcji Plany cenowe wybierz plan F1 Free.

  5. Wybierz opcję Przejrzyj i utwórz. Przejrzyj konfigurację i wybierz pozycję Utwórz po zakończeniu.

Wdrażanie do Web App for Containers

W tym pliku YAML utworzysz i prześlesz obraz platformy Docker do rejestru kontenerów, a następnie wdrożysz go do usługi Azure Web App for Containers. Na etapie budowy tworzysz i wypychasz obraz Dockera do Azure Container Registry za pomocą zadania Docker@2. Zadanie AzureWebAppContainer@1 wdraża obraz w usłudze 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)

Wdrażanie w miejscu wdrożenia

Skonfiguruj kontener aplikacji internetowej platformy Azure, aby mieć wiele miejsc. Sloty umożliwiają bezpieczne wdrażanie aplikacji i jej testowanie przed przekazaniem jej do użytku klientom. Dowiedz się więcej w temacie Tworzenie środowisk przejściowych.

Poniższy fragment kodu YAML przedstawia sposób wdrażania w miejscu przejściowym, a następnie zamiany na miejsce produkcyjne:

- 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

Często zadawane pytania

.: Jak mogę znaleźć poświadczenia rejestru platformy Docker?

1: Przejdź do witryny Azure Portal i wybierz swoją aplikację internetową dla kontenerów. Wybierz Konfiguracja>Ustawienia aplikacji, a następnie wybierz opcję, aby wyświetlić wartość.

Zrzut ekranu witryny Azure Portal przedstawiający sposób znajdowania poświadczeń rejestru platformy Docker.