Compilar e publicar a imagem do Docker no Registro de Contêiner do Azure
Azure DevOps Services | Azure DevOps Server 2022
Usando o Azure Pipelines, você pode configurar um fluxo de trabalho de pipeline para compilar e publicar suas imagens do Docker para Registro de Contêiner do Azure. Neste artigo, você aprenderá a:
- Criar um Registro de Contêiner do Azure
- Configurar um agente auto-hospedado em uma VM do Azure
- Configurar a Identidade de Serviço Gerenciada
- Criar uma conexão de serviço do Registro do Docker
- Compilar e publicar sua imagem no Registro de Contêiner do Azure
Pré-requisitos
Uma conta do GitHub. Inscreva-se gratuitamente, se você ainda não tiver uma.
A função de Administrador para conexões de serviço em seu projeto do Azure DevOps.
Uma conta do Azure com uma assinatura ativa. Inscreva-se gratuitamente se você ainda não tiver uma.
Obter o código
Bifurque ou clone o aplicativo de exemplo para acompanhar esse tutorial.
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Criar um Registro de Contêiner do Azure
Navegue até o portal do Azure.
Selecione Criar um recurso no painel de navegação esquerdo e selecione Contêineres e Registro de Contêiner.
Selecione sua Assinatura e selecione seu Grupo de recursos ou crie um novo.
Insira um Nome de registro para o registro de contêiner. O nome do registro deve ser exclusivo no Azure e deve conter pelo menos 5 caracteres.
Selecione seu Local e SKU preferidos e selecione Examinar + criar.
Examine suas configurações e selecione Criar quando terminar.
Configurar uma VM de agente auto-hospedado
Para usar a Identidade de Serviço Gerenciada com o Azure Pipelines para publicar imagens do Docker no Registro de Contêiner do Azure, devemos configurar nosso agente auto-hospedado em uma VM do Azure.
Criar uma máquina virtual
Navegue até o portal do Azure.
Selecione Criar um recurso no painel de navegação esquerdo e selecione Máquina virtual ->Criar.
Selecione sua Assinatura e selecione o Grupo de recursos que você usou para criar seu registro de contêiner.
Dê um nome à sua máquina virtual e escolha uma Imagem.
Insira seu Nome de usuário e Senha e selecione Examinar + criar.
Examine as configurações e selecione Criar quando terminar.
Selecione Ir para o recurso quando a implantação estiver concluída.
Criar um pool de agentes
No projeto do Azure DevOps, selecione o ícone de engrenagem para navegar até as Configurações do projeto.
Selecione Pools de agentes e selecione Adicionar pool.
Selecione Novo e selecione Auto-hospedado no menu suspenso Tipo de pool.
Dê um nome ao pool e marque a caixa de seleção Conceder permissão de acesso a todos os pipelines.
Selecione Criar quando terminar.
Agora, selecione o pool que você acabou de criar e selecione Novo agente.
Usaremos as instruções nesta janela para configurar seu agente na VM que você criou anteriormente. Selecione o botão Copiar para copiar o link de download para a área de transferência.
Criar um token de acesso pessoal
Em seu projeto do Azure DevOps, selecione Configurações do Usuário e selecione Tokens de Acesso Pessoal.
Selecione Novo Token para criar um novo Token de Acesso Pessoal.
Insira um nome para o PAT e escolha uma data de validade.
Selecione Personalizado definido em Escopos e selecione Mostrar todos os escopos.
Selecione Pools de Agentes ->Ler e gerenciar e Grupos de Implantação ->Ler e gerenciar.
Selecione Criar quando terminar e salve seu PAT em um local seguro.
Configurar um agente auto-hospedado
No portal do Azure, conecte-se à VM.
Em um prompt de comando do PowerShell com privilégios elevados, execute o comando a seguir para baixar o agente.
Invoke-WebRequest -URI <YOUR_AGENT_DOWNLOAD_LINK> -UseBasicParsing -OutFile <FILE_PATH> ##Example: Invoke-WebRequest -URI https://vstsagentpackage.azureedge.net/agent/2.213.2/vsts-agent-win-x64-2.213.2.zip -OutFile C:\vsts-agent-win-x64-2.213.2.zip
Execute o comando a seguir para extrair e criar seu agente.
mkdir agent ; cd agent Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("<FILE_PATH>", "$PWD")
Execute o comando a seguir para começar a configurar o agente.
.\config.cmd
Insira a URL do servidor quando solicitado a inserir. Exemplo: https://dev.azure.com/fabrikamFiber
Quando for solicitado qual tipo de autenticação escolher, pressione Enter para autenticação PAT.
Cole o token de acesso pessoal que você criou anteriormente e pressione Enter.
Insira o nome do pool de agentes e insira o nome do agente.
Deixe o valor padrão para a pasta de trabalho e insira Y se quiser executar o agente como um serviço.
Agora que o agente está pronto para começar a escutar trabalhos, vamos instalar o Docker em nossa VM. Execute o comando a seguir para baixar o Docker.
Invoke-WebRequest -URI https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe -OutFile <DOWNLOAD_PATH>
Navegue até o caminho de download e execute o comando a seguir para instalar e iniciar o Docker.
Start-Process 'Docker%20Desktop%20Installer.exe' -Wait install
Agora, navegue de volta para a pasta do agente e execute o arquivo cmd para executar o agente em sua VM do Azure.
.\run.cmd
Seu agente deve estar listado agora no pool de agentes ->Agentes no portal do Azure DevOps.
Configurar a identidade gerenciada
No portal do Azure, navegue até a VM que você criou anteriormente.
Selecione Identidade no painel de navegação esquerdo e habilite a identidade Atribuída pelo sistema.
Selecione Salvar quando terminar e confirme sua escolha.
Selecione Atribuições de função do Azuree, em seguida, selecione Adicionar atribuição de função.
Selecione Grupo de recursos no menu suspenso Escopo.
Selecione sua Assinatura e seu Grupo de recursos e selecione a função AcrPush.
Repita as etapas 5 e 6 para adicionar a função AcrPull.
Criar uma conexão de serviço do registro do Docker
No projeto do Azure DevOps, selecione o ícone de engrenagem para navegar até as Configurações do projeto.
Selecione Conexões de serviço no painel esquerdo.
Selecione Nova conexão de serviço, escolha Registro do Docker e selecione Próximo.
Selecione Registro de Contêiner do Azure e selecione Identidade de Serviço Gerenciada como o Tipo de Autenticação.
Insira a ID da assinatura o Nome da assinatura e o servidor de logon do registro de contêiner do Azure. Cole a ID do locatário atribuída pelo sistema da VM que você criou na etapa anterior no campo de texto ID do locatário.
Insira um nome para sua conexão de serviço e marque a caixa de seleção Conceder permissão de acesso a todos os pipelines. Para selecionar essa opção, você precisará da função de Administrador da conexão de serviço.
Selecione Save quando terminar.
Compilar e publicar no Registro de Contêiner do Azure
No seu projeto do Azure DevOps, selecione Pipelines e Criar Pipeline.
Selecione o serviço que hospeda seu código-fonte (Azure Repos, GitHub etc).
Selecione o repositório e selecione Pipeline inicial.
Exclua o pipeline yaml padrão e use o seguinte snippet:
trigger: - main variables: dockerRegistryServiceConnection: '<SERVICE_CONNECTION_NAME>' imageRepository: '<IMAGE_NAME>' dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile' tag: '$(Build.BuildId)' stages: - stage: Build displayName: Build and publish stage jobs: - job: Build displayName: Build job pool: name: '<YOUR_AGENT_POOL_NAME>' steps: - task: DockerInstaller@0 inputs: dockerVersion: '17.09.0-ce' - task: Docker@2 displayName: Build and publish image to Azure Container Registry inputs: command: buildAndPush containerRegistry: $(dockerRegistryServiceConnection) repository: $(imageRepository) dockerfile: $(dockerfilePath) tags: | $(tag)
Depois que a execução do pipeline for concluída, você poderá verificar sua imagem no Azure. Navegue até o Registro de Contêiner do Azure no portal do Azure e selecione Repositórios.
Limpar os recursos
Se você não planeja continuar usando esse aplicativo, exclua o grupo de recursos para evitar incorrer em encargos contínuos.
az group delete --name myapp-rg