Guia de início rápido: criar uma imagem de contêiner para implantar aplicativos usando o Azure Pipelines

Serviços de DevOps do Azure

Este guia de início rápido mostra como criar uma imagem de contêiner para implantação de aplicativo usando o Azure Pipelines. Para criar esta imagem, tudo o que você precisa é de um Dockerfile em seu repositório. Você pode criar contêineres Linux ou Windows, com base no agente que você usa em seu pipeline.

Pré-requisitos

Fork o repositório de exemplo

Em seu navegador, vá para o repositório de exemplo a seguir e bifurque-o para sua conta do GitHub.

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Criar uma imagem do Linux ou do Windows

  1. Entre na sua organização do Azure DevOps e vá para o seu projeto.

  2. Vá para Pipelines e selecione New Pipeline ou Create Pipeline se estiver criando o primeiro pipeline no projeto.

  3. Selecione GitHub como o local para o seu código-fonte.

  4. Selecione seu repositório e, em seguida, selecione Pipeline inicial.

    • Se você for redirecionado para o GitHub para entrar, insira suas credenciais do GitHub.
    • Se você for redirecionado para o GitHub para instalar o aplicativo Azure Pipelines, selecione Aprovar e instalar.
  5. Substitua o conteúdo do azure-pipelines.yml pelo código a seguir. Com base no fato de você estar implantando um aplicativo Linux ou Windows, certifique-se de definir vmImage respectivamente como um ubuntu-latest ou windows-latest.

     trigger:
     - main
    
     pool:
       vmImage: 'ubuntu-latest' 
    
     variables:
       imageName: 'pipelines-javascript-docker'
    
     steps:
     - task: Docker@2
       displayName: Build an image
       inputs:
         repository: $(imageName)
         command: build
         Dockerfile: app/Dockerfile
    
  6. Quando terminar, selecione Salvar e executar.

  7. Ao adicionar o arquivo azure-pipelines.yml ao repositório, você será solicitado a adicionar uma mensagem de confirmação. Introduza uma mensagem e, em seguida, selecione Guardar e executar.

Ao usar agentes auto-hospedados, certifique-se de que o Docker esteja instalado no host do agente e que o mecanismo/daemon do Docker esteja sendo executado com privilégios elevados.

Para criar a imagem, o Docker deve ser instalado no host do agente e o mecanismo/daemon do Docker deve ser executado com privilégios elevados. Use as etapas a seguir para criar seu pipeline usando o editor de pipeline YAML.

  1. Vá para a sua coleção e crie um projeto.
  2. No seu projeto, selecione Pipelines.
  3. Selecione Criar Pipeline.
  4. Selecione GitHub Enterprise Server como o local para seu código-fonte.
  5. Se ainda não o fez, autorize o Azure Pipelines a se conectar à sua conta do GitHub Enterprise Server.
    1. Selecione Conectar ao GitHub Enterprise Server.
    2. Introduza os detalhes da sua conta e, em seguida, selecione Verificar e guardar.
  6. Selecione o seu repositório. Se você for redirecionado para o GitHub para instalar o aplicativo Azure Pipelines, selecione Aprovar e instalar.
  7. Para configurar seu pipeline, selecione o modelo de imagem Criar um Docker.
  8. No editor de pipeline YAML, substitua o conteúdo do arquivo YAML pelo código a seguir. Substitua o nome do pool pelo nome do pool que contém seu agente auto-hospedado pelo recurso Docker.
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- main

pool:
  name: default
  demands: docker

variables:
  imageName: 'pipelines-javascript-docker'

steps:
 - task: Docker@2
   displayName: Build an image
   inputs:
     repository: $(imageName)
     command: build
     Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'

  1. Selecione Guardar e executar.
  2. Na página Salvar e executar, selecione Salvar e executar novamente.

Para obter mais informações sobre como criar imagens do Docker, consulte a tarefa do Docker usada por este aplicativo de exemplo. Você também pode invocar comandos do Docker diretamente usando uma tarefa de linha de comando.

As imagens de contêiner são criadas e armazenadas no agente. Você pode enviar sua imagem por push para o Registro de contêiner do Google, o Hub do Docker ou o Registro de contêiner do Azure. Para obter mais informações, consulte Enviar uma imagem por push para o Docker Hub ou o Google Container Registry ou Enviar uma imagem para o Azure Container Registry.

Clean up resources (Limpar recursos)

Se você não planeja continuar usando este aplicativo, exclua seu pipeline e repositório de código.

FAQ

Que agentes posso utilizar para criar imagens de contentor?

  • Pode criar imagens de contentor do Linux com agentes Ubuntu alojados na Microsoft ou agentes autoalojados baseados na plataforma Linux.

  • Pode criar imagens de contentor do Windows com agentes Windows alojados na Microsoft ou agentes autoalojados baseados na plataforma Windows. Todos os agentes baseados na plataforma do Windows alojados na Microsoft são enviados com o motor Moby e o cliente necessário para compilações do Docker.

  • No momento, não é possível usar agentes macOS hospedados pela Microsoft para criar imagens de contêiner porque o mecanismo Moby necessário para criar as imagens não está pré-instalado nesses agentes.

Para obter mais informações, veja Opções do agente do Windows e do Linux disponíveis com agentes alojados na Microsoft.

Quais imagens do Docker pré-armazenadas em cache estão disponíveis em agentes hospedados?

Para evitar passar longos intervalos extraindo imagens do Docker para cada trabalho do registro do contêiner, algumas imagens comumente usadas são pré-armazenadas em cache em agentes hospedados pela Microsoft.

Como defino a variável BuildKit para minhas compilações do Docker?

O BuildKit apresenta melhorias de compilação relacionadas ao desempenho, gerenciamento de armazenamento, funcionalidade de recursos e segurança. Atualmente, o BuildKit não é suportado em hosts Windows.

Para habilitar compilações do Docker usando o BuildKit, defina a variável DOCKER_BUILDKIT .

trigger:
- main
   
pool:
  vmImage: 'ubuntu-latest'
   

variables:
  imageName: 'pipelines-javascript-docker'
  DOCKER_BUILDKIT: 1
    
steps:
- task: Docker@2
  displayName: Build an image
  inputs:
    repository: $(imageName)
    command: build
    Dockerfile: app/Dockerfile

Como posso utilizar um agente autoalojado?

O Docker deve ser instalado e o mecanismo/daemon em execução no host do agente. Se o Docker não estiver instalado no host do agente, você poderá adicionar a tarefa do instalador do Docker ao seu pipeline. Você deve adicionar a Tarefa do Instalador do Docker antes da Tarefa do Docker.

Como posso criar uma compilação do Docker baseada em script em vez de usar a tarefa do Docker?

Você pode usar o build comando ou qualquer outro comando do Docker.

docker build -f Dockerfile -t foobar.azurecr.io/hello:world .

Este comando cria uma imagem equivalente a uma criada com a tarefa do Docker. Internamente, a tarefa do Docker chama o binário do Docker em um script e junta mais alguns comandos para fornecer mais alguns benefícios. Saiba mais sobre a tarefa do Docker.

Posso reutilizar o cache de camada durante compilações no Azure Pipelines?

Se você estiver usando agentes hospedados pela Microsoft, cada trabalho será enviado para uma máquina virtual recém-provisionada, com base na imagem gerada a partir de modelos de repositório azure-pipelines-image-generation. Essas máquinas virtuais são limpas após a conclusão do trabalho. Essa vida útil efêmera impede a reutilização dessas máquinas virtuais para trabalhos subsequentes e a reutilização de camadas do Docker armazenadas em cache. Como solução alternativa, você pode configurar uma compilação de vários estágios que produz duas imagens e as envia por push para um registro de imagem em um estágio inicial. Em seguida, você pode dizer ao Docker para usar essas imagens como uma fonte de cache com o --cache-from argumento.

Se você estiver usando agentes auto-hospedados, poderá armazenar em cache camadas do Docker sem nenhuma solução alternativa porque o problema de tempo de vida efêmero não se aplica a esses agentes.

Como devo proceder para criar imagens de contentor do Linux para arquiteturas diferentes de x64?

Quando utiliza agentes Linux alojados na Microsoft, cria imagens de contentor do Linux para a arquitetura x64. Para criar imagens para outras arquiteturas, como x86 ou processador ARM, pode utilizar um emulador de computador, como QEMU.

As etapas a seguir mostram como criar uma imagem de contêiner do processador ARM usando o QEMU:

  1. Crie seu Dockerfile com uma imagem base que corresponda à arquitetura de destino:

    FROM arm64v8/alpine:latest
    
  2. Execute o seguinte script em seu trabalho antes de criar a imagem:

    # register QEMU binary - this can be done by running the following image
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    # build your image
    

Para obter mais informações, consulte qemu-user-static no GitHub.

Como faço para executar testes e publicar resultados de teste para aplicativos em contêineres?

Para obter diferentes opções sobre como testar aplicativos em contêineres e publicar os resultados de teste resultantes, consulte Tarefa Publicar resultados de teste.

Próximos passos

Depois de criar sua imagem de contêiner, envie a imagem por push para o Registro de Contêiner do Azure, o Hub do Docker ou o Registro do Contêiner do Google. Para saber como enviar uma imagem por push para um registro de contêiner, continue para um dos seguintes artigos: