Compartilhar via


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

Azure DevOps Services | 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 de Aplicativo Web do Serviço de Aplicativo do Azure no Linux. Neste artigo, você aprenderá a usar pipelines YAML ou Clássico para:

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

Pré-requisitos

Produto Requisitos
Azure DevOps – Uma organização e um projeto do Azure DevOps. Crie um gratuitamente.
- Permissões:
    – Para conceder acesso a todos os pipelines no projeto: você deve ser membro do grupo Administradores do Projeto.
    – Para criar conexões de serviço: você deve ter a função 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 uma camada gratuita.
GitHub - Uma conta do GitHub .
Azul - Um Registro de Contêiner do Azure. Criar um registro de contêiner do Azure se você ainda não tiver um.

Obter o código

Faça um fork do seguinte aplicativo de amostra 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. Confira a seção Pré-requisitos para detalhes.

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

  2. Selecione Pipelines e Novo Pipeline.

  3. Selecione GitHub quando solicitado o local do código-fonte e selecione o repositório.

  4. Selecione o modelo de pipeline Docker: criar e enviar uma imagem para Azure Container Registry.

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

  5. Selecione sua Assinatura do Azure e escolha Continuar.

  6. Selecione o 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. Examine o modelo YAML do pipeline e selecione Salvar e executar para compilar 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 publicada do Docker após a conclusão da execução do pipeline, acesse 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 do registro de contêiner, habilite a conta de usuário do administrador. Vá para o registro de contêiner no portal do Azure e selecione chaves do Access. Em seguida, selecione o botão de alternância para habilitar o usuário administrador.

Criar um aplicativo Web

  1. Vá para o portal do Azure.

  2. Selecione Criar um recurso>Contêineres e escolha Aplicativo Web de Contêineres.

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

  3. Insira um nome para seu novo aplicativo Web e crie um novo grupo de recursos. Selecione Linux como Sistema Operacional.

    Captura de tela da configuração do aplicativo Web.

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

  5. Selecione Examinar e criar. Examine sua configuração e selecione Criar quando terminar.

Implantar o aplicativo Web para contêineres

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 Compilar, 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 Aplicativo Web para Contêineres.


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 implantar seu aplicativo com segurança e testá-lo antes de disponibilizá-lo para seus clientes. Saiba mais em Criar ambientes de preparo.

O trecho de código YAML a seguir mostra como implantar em um slot de preparo e, em seguida, alternar 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

perguntas frequentes

P: Como posso encontrar minhas credenciais do Registro do Docker?

R: Acesse o portal do Azure e selecione seu Aplicativo Web para Contêineres. Selecione Configuração>as configurações do Aplicativo, e então selecione mostrar o valor.

Captura de tela do portal do Azure mostrando como encontrar credenciais do Registro do Docker.