Partilhar via


Implantar um contêiner personalizado no Serviço de Aplicativo do Azure com o Azure Pipelines

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

Usando o Azure Pipelines, você pode criar, testar e implantar automaticamente seu aplicativo Web em um contêiner do Aplicativo Web do Serviço de Aplicativo do Azure no Linux. Neste artigo, você aprenderá a usar pipelines YAML ou Classic para:

  • Crie e publique uma imagem do Docker no Registro de Contêiner do Azure.
  • Crie um Aplicativo Web do Azure.
  • Implante um contêiner no Serviço de Aplicativo do Azure.
  • Implante em slots de implantação.

Pré-requisitos

Produto Requisitos
Azure DevOps - Uma organização e um projeto de DevOps do Azure. Crie um gratuitamente.
- Permissões:
    - Para conceder acesso a todos os pipelines no projeto: Você deve ser membro do grupo Administradores de Projeto.
    - Para criar conexões de serviço: Você deve ter a função de Administrador ou Criador para conexões de serviço.
- Capacidade de executar pipelines em agentes hospedados pela Microsoft. Você pode comprar um trabalho paralelo ou solicitar um nível gratuito.
GitHub - Uma conta GitHub.
Azure - Um Registro de Contêiner do Azure. Crie um registro de contêiner do Azure se ainda não tiver um.

Obter o código

Fork o seguinte aplicativo de exemplo no GitHub.

https://github.com/spring-guides/gs-spring-boot-docker.git

Criar e publicar uma imagem do Docker no Registro de Contêiner do Azure

Para concluir esta seção com êxito, você deve ter um Registro de Contêiner do Azure. Consulte a seção de pré-requisitos para obter detalhes.

  1. Entre em sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Pipelines e, em seguida , New Pipeline.

  3. Selecione GitHub quando solicitado para o local do seu código-fonte e, em seguida, selecione seu repositório.

  4. Selecione o modelo de pipeline Docker: criar e enviar por push uma imagem para o Registro de Contêiner do Azure.

    Captura de tela mostrando a seleção do modelo de pipeline do Docker.

  5. Selecione sua assinatura do Azure e selecione Continuar.

  6. Selecione seu registro de contêiner no menu suspenso e, em seguida, selecione Validar e configurar.

    Captura de tela da tela de validação e configuração do Docker.

  7. Revise o modelo YAML de pipeline e selecione Salvar e executar para criar e publicar a imagem do Docker no Registro de Contêiner do Azure.

    trigger:
    - main
    
    resources:
    - repo: self
    
    variables:
        # Container registry service connection established during pipeline creation
        dockerRegistryServiceConnection: '{{ containerRegistryConnection.Id }}'
        imageRepository: 'javascriptdocker'
        containerRegistry: 'sampleappcontainerregistry.azurecr.io'
        dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
        tag: '$(Build.BuildId)'
    
        # Agent VM image name
        vmImageName: 'ubuntu-latest'
    
    stages:
    - stage: Build
        displayName: Build and push stage
        jobs:
        - job: Build
        displayName: Build
        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)
    
  8. Para exibir a imagem do Docker publicada após a conclusão da execução do pipeline, vá para o registro de contêiner no portal do Azure e selecione Repositórios.

    Captura de tela da imagem do Docker publicada no Registro de Contêiner do Azure.

  9. Para implantar a imagem a partir do registro do contêiner, habilite a conta de usuário administrador. Vá para o registro de contêiner no portal do Azure e selecione Chaves de acesso. Em seguida, selecione o botão de alternância para Ativar usuário administrador.

Criar uma Aplicação Web

  1. Aceda ao portal do Azure.

  2. Selecione Criar um recurso>Contêineres e, em seguida, escolha Aplicativo Web para Contêineres.

    Captura de tela da criação de um recurso de aplicativo Web para contêineres.

  3. Insira um nome para seu novo aplicativo Web e crie um novo grupo de recursos. Selecione Linux para o sistema operacional.

    Captura de ecrã a mostrar a configuração da aplicação Web.

  4. Na seção Planos de preços , selecione o plano F1 Free.

  5. Selecione Rever e criar. Reveja a configuração e selecione Criar quando terminar.

Implementar na Aplicação Web para Contentores

Neste YAML, você cria e envia por push uma imagem do Docker para um registro de contêiner e, em seguida, implanta-a no Aplicativo Web do Azure para Contêineres. No estágio Compilação, você cria e envia por push uma imagem do Docker para um Registro de Contêiner do Azure com a tarefa Docker@2. A tarefa AzureWebAppContainer@1 implanta a imagem no Web App for Containers.


trigger:
- main

resources:
- repo: self

variables: 
  ## Add this under variables section in the pipeline
  azureSubscription: <Name of the Azure subscription>
  appName: <Name of the Web App>
  containerRegistry: <Name of the Azure container registry>
  dockerRegistryServiceConnection: '4fa4efbc-59af-4c0b-8637-1d5bf7f268fc'
  imageRepository: <Name of image repository>
  dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
  tag: '$(Build.BuildId)'

  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: Build and push stage
  jobs:
  - job: Build
    displayName: Build
    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)


    ## Add the below snippet at the end of your pipeline
    - task: AzureWebAppContainer@1
      displayName: 'Azure Web App on Container Deploy'
      inputs:
        azureSubscription: $(azureSubscription)
        appName: $(appName)
        containers: $(containerRegistry)/$(imageRepository):$(tag)

Implantar em um slot de implantação

Configure o contêiner do Aplicativo Web do Azure para ter vários slots. Os slots permitem que você implante seu aplicativo com segurança e teste-o antes de disponibilizá-lo para seus clientes. Saiba mais em Criar ambientes de preparação.

O trecho YAML a seguir mostra como implantar em um slot de preparo e, em seguida, trocar para um slot de produção:

- task: AzureWebAppContainer@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appName: '<Name of the web app>'
    containers: $(containerRegistry)/$(imageRepository):$(tag)
    deployToSlotOrASE: true
    resourceGroupName: '<Name of the resource group>'
    slotName: staging

- task: AzureAppServiceManage@0
  inputs:
    azureSubscription: '<Azure service connection>'
    WebAppName: '<name of web app>'
    ResourceGroupName: '<name of resource group>'
    SourceSlot: staging
    SwapWithProduction: true

FAQ

P: Como posso encontrar minhas credenciais de registro do Docker?

R: Vá para o portal do Azure e selecione seu Aplicativo Web para Contêineres. Selecione Configurações>do aplicativo e, em seguida, selecione para mostrar o valor.

Captura de tela do portal do Azure mostrando como localizar credenciais de registro do Docker.