Использование Docker YAML для сборки и отправки образов Docker в Реестр контейнеров Azure

Azure DevOps Services

В этом руководстве показано, как использовать конвейер на основе шаблона Docker Azure Pipelines для создания контейнерного приложения и отправки его в Реестр контейнеров Azure. Шаблон настраивает конвейер YAML непрерывной интеграции, в котором изменения нового репозитория кода активируют конвейер для создания и публикации обновленных образов Docker в реестре.

Конвейер шаблона контейнера Docker использует агенты, размещенные корпорацией Майкрософт, и создает подключение службы на основе субъекта-службы к Реестр контейнеров Azure. Конвейер, который выполняет аналогичный процесс с помощью локальных агентов и создаваемого подключения к службе, см. статью "Сборка и отправка образов Docker в Реестр контейнеров Azure".

Необходимые компоненты

  • Учетная запись Azure, в которой у вас есть разрешение на создание и настройку ресурсов. Если у вас нет учетной записи Azure, зарегистрируйтесь для получения бесплатной учетной записи.

  • Организация и проект Azure DevOps, где у вас есть разрешение на создание конвейеров и развертывание приложений. Сведения о создании организации или проекта см. в статье "Создание новой организации " или "Создание проекта" в Azure DevOps.

  • Учетная запись GitHub.

    Внимание

    При использовании GitHub в следующих процедурах может потребоваться создать подключение службы GitHub, войти в GitHub, пройти проверку подлинности в организациях GitHub, установить Azure Pipelines или авторизовать Azure Pipelines. Следуйте инструкциям на экране, чтобы завершить процесс. Дополнительные сведения см. в разделе Access к репозиториям GitHub.

Получение примера приложения

В GitHub вилку или клонируйте пример Docker и Kubernetes Node.JS репозиторий приложений .

Создание реестра контейнеров

  1. В портал Azure войдите в Azure Cloud Shell, выбрав значок в верхней строке меню. Обязательно используйте оболочку Bash .

    Кнопка Azure Cloud Shell

  2. В Cloud Shell выполните следующие команды, чтобы создать группу ресурсов и реестр контейнеров Azure с помощью Azure CLI. Имя реестра контейнеров должно быть строчным регистром.

    az group create --name myapp-rg --location eastus
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    
  3. Чтобы развернуть образ Docker в реестре контейнеров Azure, необходимо включить учетную запись администратора для реестра, которая отключена по умолчанию. Чтобы включить пользователя администратора для реестра, используйте --admin-enabled параметр с командой az acr update . Дополнительные сведения и инструкции см. в разделе "Учетная запись администратора".

    az acr update -n <acrName> --admin-enabled true
    

Кроме того, можно использовать пользовательский интерфейс портал Azure для создания реестра контейнеров Azure. Инструкции см. в разделе "Создание реестра контейнеров". Включите учетную запись администратора в свойствах после создания реестра.

Создание конвейера

  1. В проекте Azure DevOps выберите конвейер Pipelines>New или Create pipeline, если этот конвейер является первым в проекте.

    Снимок экрана: экран создания конвейера.

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

  3. На экране "Выбор репозитория" выберите пример репозитория кода.

  4. На экране "Настройка конвейера" выберите Docker: build and push an image to Реестр контейнеров Azure pipeline.

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

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

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

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

    Azure Pipelines создает файл azure-pipelines.yml , определяющий конвейер.

  7. Просмотрите код в azure-pipelines.yml, а затем нажмите кнопку "Сохранить и запустить".

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

  8. При необходимости измените сообщение "Фиксация" и укажите описание. Затем нажмите кнопку "Сохранить и снова запустить ", чтобы зафиксировать файл azure-pipelines.yml в репозиторий и запустить сборку.

  9. На странице выполнения сборки отображаются сведения о сборке и ходе выполнения. Чтобы просмотреть конвейер в действии, выберите " Сборка " в разделе "Задания".

    Снимок экрана: ссылка на сборку на странице запуска задания.

Сведения о конвейере

Конвейер создается из шаблона контейнера Docker. Этап сборки использует задачу Docker версии 2 для сборки и отправки образа Docker в реестр контейнеров.

Задача Docker использует подключение службы реестра Docker к проверке подлинности субъекта-службы, чтобы конвейер мог отправлять образы в реестр контейнеров. Шаблон контейнера Docker создает это подключение к службе при создании конвейера.

- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build job
    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)

Очистка ресурсов

Завершив использование ресурсов, созданных в этом руководстве, их можно удалить, чтобы избежать дополнительных расходов. Выполните следующую команду Cloud Shell, чтобы удалить группу ресурсов и все ресурсы в ней.

az group delete --name myapp-rg