Implantar um contêiner personalizado no Serviço de Aplicativo do Azure com o Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
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:
- Criar e publicar uma imagem do Docker no Registro de Contêiner do Azure
- Criar um aplicativo Web do Azure
- Implantar o contêiner no Serviço de Aplicativo do Azure
- Implantar em slots de implantação
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Uma conta do GitHub. Crie uma conta do GitHub gratuitamente, caso ainda não tenha uma.
- Uma organização do Azure DevOps. Crie uma organização se ainda não tiver uma.
- 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
Bifurcação do aplicativo de amostra a seguir 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.
Entre na sua organização do Azure DevOps e navegue até seu projeto.
Selecione Pipelines e Novo Pipeline.
Selecione GitHub quando solicitado o local do código-fonte e selecione o repositório.
Selecione o modelo de pipeline Docker: compilar e efetuar push de uma imagem para Registro de Contêiner do Azure.
Selecione sua Assinatura do Azure e escolha Continuar.
Selecione o Registro de contêiner no menu suspenso e, em seguida, selecione Validar e configurar.
Examine o modelo YAML do pipeline e, em seguida, selecione Salvar e executar para compilar e publicar a imagem do Docker em seu 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)
Para exibir a imagem publicada do Docker após a conclusão da execução de pipeline, navegue até o registro de contêiner no portal do Azure e selecione Repositórios.
Para implantar sua imagem do registro de contêiner, habilite a conta de usuário administrador. Navegue até seu registro de contêiner no portal do Azure e selecione Chaves de acesso. Em seguida, selecione o botão de alternância para Habilitar Administração usuário.
Criar um aplicativo Web
Navegue até o portal do Azure.
Selecione Criar um recurso>Contêineres e, em seguida, escolha Aplicativo Web para Contêineres.
Insira um nome para seu novo aplicativo Web e crie um Grupo de Recursos. Selecione Linux como Sistema Operacional.
Na seção Planos de preços, escolha o plano F1 Free.
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
Você pode configurar 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. Confira Criar ambientes de preparo para mais detalhes.
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: Navegue até portal do Azure e selecione seu Aplicativo Web para Contêineres. Selecione Configuração>Configurações do aplicativo e clique para mostrar o valor.