Partilhar via


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

Neste início rápido, você aprende a criar uma imagem de contêiner para implantação de aplicativo usando o Azure Pipelines. Para criar essa imagem, você só precisa de um Dockerfile em seu repositório. Você pode criar contêineres Linux ou Windows dependendo do agente que você usa em seu pipeline.

Pré-requisitos

Categoria Requerimentos
Azure DevOps - Um projeto Azure DevOps.
- Capacidade de executar pipelines em agentes hospedados pela Microsoft. Você pode comprar um trabalho paralelo ou solicitar um nível gratuito.
- Conhecimentos básicos de YAML e Azure Pipelines. Para obter mais informações, consulte Criar seu primeiro pipeline.
- Permissões:
     Para criar um pipeline, os usuários precisam estar no grupo Colaboradores e o grupo precisa ter a permissão Criar pipeline de compilação definida como Permitir. Os membros dos grupos Administradores de compilação e Administradores de projeto também podem gerir pipelines.
GitHub - Uma conta GitHub.
- Uma ligação de serviço do GitHub para autorizar o Azure Pipelines.
Azure Uma assinatura do Azure.

Faça um fork do 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. Dependendo se você estiver implantando um aplicativo Linux ou Windows, defina vmImage 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, verifique se o Docker está instalado no host do agente e se o mecanismo/daemon do Docker está 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 o seu pipeline, selecione o modelo Construir uma imagem 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 o seu agente auto-hospedado com a capacidade 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. Envie sua imagem 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.

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 contêiner?

  • Pode criar imagens de contêiner Linux com agentes Ubuntu hospedados pela Microsoft ou agentes baseados na plataforma Linux auto-hospedados.

  • Pode criar imagens de contentores do Windows utilizando agentes do Windows alojados pela Microsoft ou agentes alojados localmente 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.

  • 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, consulte 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 economizar tempo extraindo imagens do Docker para cada trabalho do registro de 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 autogerido?

Docker tem de estar instalado e o motor ou daemon em execução no host do agente. Se o Docker não estiver instalado, adicione a tarefa do instalador do Docker ao seu pipeline. Adicione 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 num script e combina mais alguns comandos para assegurar benefícios adicionais. Saiba mais sobre a tarefa do Docker.

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

Se utilizar agentes hospedados pela Microsoft, cada trabalho é enviado para uma máquina virtual recém-provisionada, com base na imagem gerada a partir dos modelos do 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, pode-se configurar uma compilação de vários estágios que produz duas imagens e as carrega para um repositório de imagens num estágio inicial. Em seguida, pode indicar ao Docker para usar essas imagens como fonte de cache com o argumento --cache-from.

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 pela Microsoft, cria imagens de contentor Linux para a arquitetura x64. Para criar imagens para outras arquiteturas, como x86 ou processador ARM, pode utilizar um emulador de computador, como QEMU.

Siga estas etapas para 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 explorar opções para testar aplicativos em contêineres e publicar resultados de teste, 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, consulte um dos seguintes artigos: