Использование 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 репозиторий приложений .
Создание реестра контейнеров
В портал Azure войдите в Azure Cloud Shell, выбрав значок в верхней строке меню. Обязательно используйте оболочку Bash .
В Cloud Shell выполните следующие команды, чтобы создать группу ресурсов и реестр контейнеров Azure с помощью Azure CLI. Имя реестра контейнеров должно быть строчным регистром.
az group create --name myapp-rg --location eastus az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
Чтобы развернуть образ Docker в реестре контейнеров Azure, необходимо включить учетную запись администратора для реестра, которая отключена по умолчанию. Чтобы включить пользователя администратора для реестра, используйте
--admin-enabled
параметр с командойaz acr update
. Дополнительные сведения и инструкции см. в разделе "Учетная запись администратора".az acr update -n <acrName> --admin-enabled true
Кроме того, можно использовать пользовательский интерфейс портал Azure для создания реестра контейнеров Azure. Инструкции см. в разделе "Создание реестра контейнеров". Включите учетную запись администратора в свойствах после создания реестра.
Создание конвейера
В проекте Azure DevOps выберите конвейер Pipelines>New или Create pipeline, если этот конвейер является первым в проекте.
Выберите GitHub в качестве расположения исходного кода.
На экране "Выбор репозитория" выберите пример репозитория кода.
На экране "Настройка конвейера" выберите Docker: build and push an image to Реестр контейнеров Azure pipeline.
На экране Docker выберите подписку Azure и нажмите кнопку "Продолжить".
Выберите реестр контейнеров в раскрывающемся меню, укажите имя образа, а затем выберите "Проверить и настроить".
Azure Pipelines создает файл azure-pipelines.yml , определяющий конвейер.
Просмотрите код в azure-pipelines.yml, а затем нажмите кнопку "Сохранить и запустить".
При необходимости измените сообщение "Фиксация" и укажите описание. Затем нажмите кнопку "Сохранить и снова запустить ", чтобы зафиксировать файл azure-pipelines.yml в репозиторий и запустить сборку.
На странице выполнения сборки отображаются сведения о сборке и ходе выполнения. Чтобы просмотреть конвейер в действии, выберите " Сборка " в разделе "Задания".
Сведения о конвейере
Конвейер создается из шаблона контейнера 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