Use Docker YAML para criar e efetuar push das imagens do Docker para o Registro de Contêiner do Azure

Azure DevOps Services

Este tutorial mostra como usar um pipeline que tem base em um modelo do Docker do Azure Pipelines para criar um aplicativo conteinerizado e enviá-lo por push ao Registro de Contêiner do Azure. O modelo configura um pipeline YAML de integração contínua em que novas alterações no repositório de código disparam o pipeline para criar e publicar imagens atualizadas do Docker no registro.

O pipeline de modelo de contêiner do Docker usa agentes hospedados pela Microsoft e cria uma conexão de serviço baseada no princípio de serviço com o Registro de Contêiner do Azure. Para um pipeline que faça um processo semelhante usando agentes auto-hospedados e uma conexão de serviço criado por você mesmo, consulte Criar e enviar imagens do Docker ao Registro de Contêiner do Azure.

Pré-requisitos

  • Uma conta do Azure em que você tem permissão para criar e configurar recursos. Caso ainda não tenha uma conta do Azure, inscreva-se para uma conta gratuita.

  • Uma organização e um projeto do Azure DevOps em que você tem permissão para criar pipelines e implantar aplicativos. Para criar uma organização ou projeto, consulte Criar uma nova organização ou Criar um projeto no Azure DevOps.

  • Uma conta do GitHub.

    Importante

    Ao usar o GitHub nos procedimentos a seguir, você pode ser solicitado a criar uma conexão de serviço do GitHub, entrar no GitHub, autenticar em organizações do GitHub, instalar o Azure Pipelines ou autorizar o Azure Pipelines. Siga as instruções na tela para efetuar o processo. Para obter mais informações, confira Acesso ao repositórios do GitHub.

Obter o aplicativo de exemplo

No GitHub, bifurque ou clone o repositório de aplicativos de exemplo do Docker e do Kubernetes Node.JS.

Criar um registro de contêiner

  1. Entre no Portal do Azure e acesse ao Azure Cloud Shell selecionando o ícone na barra de menu superior. Certifique-se de usar o shell Bash .

    Botão do Azure Cloud Shell

  2. No Cloud Shell, execute os comandos a seguir para criar um grupo de recursos e um registro de contêiner do Azure usando a CLI do Azure. O nome do Registro de Contêiner deve estar em letras minúsculas.

    az group create --name myapp-rg --location eastus
    az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
    
  3. Para implantar uma imagem do Docker no registro de contêiner do Azure, você deve habilitar a conta de usuário administrador para o registro, que está desabilitada por padrão. Para habilitar o usuário administrador para seu registro, use o --admin-enabled parâmetro com o az acr update comando. Para mais informações e instruções, confira conta do administrador.

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

Como alternativa, você pode usar a interface do usuário do portal do Azure para criar seu registro de contêiner do Azure. Para obter instruções, confira Criar um registro de contêiner. Habilite a conta de administrador em Propriedades depois de criar o registro.

Criar o pipeline

  1. Em seu projeto do Azure DevOps, selecione Pipelines>Novo pipeline ou Criar pipeline se esse pipeline for o primeiro no projeto.

    Captura de tela que mostra a opção Criar nova pipeline.

  2. Selecione GitHub como o local do código-fonte.

  3. Na tela Selecionar um repositório, selecione seu repositório de código de amostra.

  4. Na tela Configurar seu pipeline , selecione o Docker: Criar e enviar uma imagem por push para o pipeline do Registro de Contêiner do Azure.

    Captura de tela que mostra a imagem do Docker de compilar e efetuar push para a seleção de pipeline do Registro de Contêiner do Azure.

  5. Na tela do Docker, selecione sua assinatura do Azure e, em seguida, selecione Continuar .

  6. Selecione o seu Registro de Contêiner no menu suspenso, crie um Nome da imagem e selecione Validar e configurar.

    Captura de tela mostrando como configurar um pipeline do Docker para criar e publicar uma imagem no Registro de Contêiner do Azure.

    O Azure Pipelines gera um arquivo azure-pipelines.yml que define o seu pipeline.

  7. Revise o código em azure-pipelines.yml e selecione Salvar e executar.

    Captura de tela do botão Salvar e executar em um novo pipeline YAML.

  8. Opcionalmente, edite a Mensagem de confirmação e forneça uma descrição. Em seguida, selecione Salvar e executar novamente para confirmar o arquivo azure-pipelines.yml no repositório e iniciar uma compilação.

  9. A página de execução de compilação mostra detalhes e progresso da compilação. Para observar o pipeline em ação, selecione Criar em Trabalhos.

    Captura de tela que mostra o link Compilar na página de execução do trabalho.

Detalhes do pipeline

O pipeline é gerado a partir do Modelo de contêiner do Docker. O estágio de compilação usa a tarefa do Docker v2 para criar e enviar a imagem do Docker ao Registro de Contêiner.

A tarefa do Docker usa uma conexão de serviço de registro do Docker com autenticação de propósito de serviço para permitir que o pipeline envie imagens por push ao registro de contêiner. O modelo de contêiner do Docker gera essa conexão de serviço quando cria o pipeline.

- 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)

Limpar os recursos

Ao terminar de usar os recursos criados neste tutorial, você poderá excluí-los para evitar cobranças adicionais. Execute o seguinte comando Cloud Shell para excluir o grupo de recursos e todos os recursos contidos nele.

az group delete --name myapp-rg