Поделиться через


Развертывание пользовательского контейнера в службе приложение Azure с помощью Azure Pipelines

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

С помощью Azure Pipelines можно создавать, тестировать и автоматически развертывать веб-приложение в контейнере веб-приложения службы приложение Azure в Linux. В этой статье вы узнаете, как использовать yamL или классические конвейеры для:

  • Создайте и опубликуйте образ Docker в реестре контейнеров Azure.
  • Создайте веб-приложение Azure.
  • Разверните контейнер в Службе приложений Azure.
  • Развертывание в слотах развертывания.

Предварительные условия

Продукт Требования
Azure DevOps — организация и проект Azure DevOps. Создайте его бесплатно.
- Разрешения:
    — Чтобы предоставить доступ ко всем конвейерам в проекте: необходимо быть членом группы администраторов проектов.
    — Для создания подключений к службам необходимо иметь роль администратора или создателя для подключений служб.
— способность запуска потоков на хостинговых агентах Microsoft. Вы можете приобрести параллельное задание или запросить бесплатный уровень.
Сайт GitHub — учетная запись GitHub.
Лазурный — Реестр контейнеров Azure. Создайте реестр контейнеров Azure, если у вас еще нет.

Получение кода

Сделайте форк следующего демонстрационного приложения на GitHub.

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

Создание и публикация образа Docker в Реестр контейнеров Azure

Для успешного выполнения этого раздела необходимо иметь Реестр контейнеров Azure. Дополнительные сведения см. в разделе предварительных требований.

  1. Войдите в свою организацию Azure DevOps и откройте нужный проект.

  2. Выберите Конвейеры, затем Новый конвейер.

  3. Выберите GitHub при появлении запроса на расположение исходного кода и выберите репозиторий.

  4. Выберите шаблон конвейера Docker: создайте и отправьте образ в Реестр контейнеров Azure.

    Снимок экрана: выбор шаблона конвейера Docker.

  5. Выберите подписку Azure и нажмите кнопку "Продолжить".

  6. Выберите реестр контейнеров в раскрывающемся меню, а затем выберите "Проверить и настроить".

    Снимок экрана: экран

  7. Просмотрите шаблон YAML конвейера, а затем нажмите кнопку "Сохранить и запустить ", чтобы создать и опубликовать образ Docker в реестре контейнеров Azure.

    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. Чтобы просмотреть опубликованный образ Docker после завершения выполнения конвейера, перейдите в реестр контейнеров на портале Azure, а затем выберите репозитории.

    Снимок экрана: образ Docker, опубликованный в Реестре контейнеров Azure.

  9. Чтобы развернуть образ из реестра контейнеров, включите учетную запись администратора. Перейдите в реестр контейнеров на портале Azure и выберите ключи доступа. Затем нажмите кнопку переключателя, чтобы включить пользователя администратора.

Создание веб-приложения

  1. Перейдите на портал Azure.

  2. Выберите Создать ресурс>Контейнеры, а затем выберите Web App for Containers.

    Снимок экрана: создание веб-приложения для ресурса контейнеров.

  3. Введите имя нового веб-приложения и создайте новую группу ресурсов. Выберите Linux в поле Операционная система.

    Снимок экрана: настройка веб-приложения.

  4. В разделе "Тарифные планы" выберите план F1 Free.

  5. Выберите Просмотр и создание. Просмотрите конфигурацию и нажмите кнопку "Создать " после завершения.

Развертывание на веб-приложение для контейнеров

В этом YAML вы создаете и отправляете образ Docker в реестр контейнеров, а затем развертываете его в веб-приложении Azure для контейнеров. На этапе сборки вы создаете и отправляете образ Docker в Реестр контейнеров Azure с задачей Docker@2. Задача AzureWebAppContainer@1 развертывает образ в веб-приложение для контейнеров.


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)

Развертывание в слоте развертывания

Настройте контейнер веб-приложения Azure для нескольких слотов. Слоты позволяют безопасно развертывать приложение и тестировать его перед тем, как сделать его доступным для клиентов. Дополнительные сведения см. в разделе "Создание промежуточных сред".

В следующем фрагменте YAML показано, как выполнить развертывание в промежуточном слоте, а затем переключиться на рабочий слот:

- 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

Вопросы и ответы

Вопрос. Как найти учетные данные реестра Docker?

Ответ. Перейдите на портал Azure и выберите веб-приложение для контейнеров. Выберите Конфигурация>Параметры приложения, а затем выберите, чтобы показать значение.

Снимок экрана: портал Azure, показывающий, как найти учетные данные реестра Docker.