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 do Aplicativo Web do Serviço de Aplicativo do Azure no Linux. Neste artigo, você aprenderá como usar pipelines YAML ou Classic para:
- Criar e publicar uma imagem do Docker no Registro de Contêiner do Azure
- Criar uma Aplicação Web do Azure
- Implantar um contêiner no Serviço de Aplicativo do Azure
- Implantar em slots de implantação
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Uma conta GitHub. Crie uma conta gratuita no GitHub, se ainda não tiver uma.
- Uma organização Azure DevOps. Crie uma organização, se ainda não tiver uma.
- 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.
Entre em sua organização do Azure DevOps e navegue até seu projeto.
Selecione Pipelines e, em seguida , New Pipeline.
Selecione GitHub quando solicitado para o local do seu código-fonte e, em seguida, selecione seu repositório.
Selecione o modelo de pipeline Docker: criar e enviar por push uma imagem para o Registro de Contêiner do Azure.
Selecione sua assinatura do Azure e selecione Continuar.
Selecione seu registro de contêiner no menu suspenso e, em seguida, selecione Validar e configurar.
Analise 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)
Para exibir a imagem do Docker publicada após a conclusão da execução do pipeline, navegue até o registro de contêiner no portal do Azure e selecione Repositórios.
Para implantar sua imagem a partir do registro de contêiner, você deve habilitar a conta de usuário administrador. Navegue até o registro do 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
Navegue para o portal do Azure.
Selecione Criar um recurso>Contêineres e, em seguida, escolha Aplicativo Web para Contêineres.
Introduza um nome para a sua nova aplicação Web e crie um novo Grupo de Recursos. Selecione Linux para o sistema operacional.
Na seção Planos de preços, escolha o plano F1 Free.
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
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. Consulte Criar ambientes de preparo para obter mais detalhes.
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: Navegue até o portal do Azure e selecione seu Aplicativo Web para Contêineres. Selecione Configurações>do aplicativo e, em seguida, clique para mostrar o valor.