Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo explica como configurar a CI/CD (integração contínua e entrega contínua) para uma imagem de contêiner personalizada de repositórios gerenciados do Registro de Contêiner do Azure ou do Docker Hub.
Vá para o Centro de Implantação
No portal do Azure, acesse o painel de gerenciamento do aplicativo do Serviço de Aplicativo do Azure.
No menu da barra lateral em Implantação, selecioneConfigurações> de Implantação.
Selecione a fonte de código
No menu suspenso Origem, selecione a origem da implantação com base nos seguintes critérios:
- Os conjuntos de registros de contêiner configuram CI/CD entre seu registro de contêiner e o Serviço de Aplicativo.
- Selecione a opção GitHub Actions se você mantiver o código-fonte da imagem de contêiner no GitHub. Novos commits no seu repositório do GitHub acionam a ação de implantação, que pode ser executada
docker buildedocker pushdiretamente no seu registro de contêiner. Em seguida, ele atualiza seu aplicativo do Serviço de Aplicativo para executar a nova imagem. Para obter mais informações, consulte Como o CI/CD funciona com o GitHub Actions.- Para configurar o CI/CD com Azure Pipelines, consulte Implantar um contêiner de aplicativo Web do Azure a partir do Azure Pipelines.
- Para um aplicativo Docker Compose, selecione Registro de Contêiner.
Se você selecionar o GitHub Actions, selecione Autorizar e siga os prompts de autorização. Se você tiver autorizado anteriormente com o GitHub, poderá implantar no repositório de um usuário diferente selecionando Alterar Conta.
Depois de autorizar sua conta do Azure com o GitHub, selecione a Organização, o Repositório e o Branch para implantar.
Definir configurações do Registro
Definir configurações do Registro
Observação
Os contêineres sidecar terão êxito em aplicativos de vários contêineres (Docker Compose) no Serviço de Aplicativo. Para começar, veja Tutorial: Configurar um contêiner de sidecar para contêineres personalizados no Serviço de Aplicativo do Azure.
Para implantar um aplicativo de vários contêineres (Docker Compose), selecione Docker Compose no Tipo de Contêiner. Se você não vir a lista suspensa Tipo de Contêiner, role a tela até Fonte e selecione Registro de Contêiner.
Na fonte do Registro, selecione o destino do seu registro de contêiner. Se ele não for o Registro de Contêiner do Azure ou o Docker Hub, selecione Registro privado.
Observação
Se o aplicativo de vários contêineres (Docker Compose) usar mais de uma imagem privada, verifique se as imagens privadas estão no mesmo registro privado e podem ser acessadas com as mesmas credenciais de usuário. Se o aplicativo de vários contêineres usar apenas imagens públicas, selecione o Hub do Docker, mesmo que algumas imagens não estejam no Hub do Docker.
Siga as próximas etapas selecionando a guia que corresponde à sua escolha.
A lista suspensa Registro exibe os registros na mesma assinatura do seu aplicativo. Selecione o registro desejado.
Para implantação por meio de um registro em uma assinatura diferente, selecione Registro privado na Origem do registro.
Para usar identidades gerenciadas para bloquear o acesso ao Registro de Contêiner do Azure, consulte:
- Como usar identidades gerenciadas atribuídas pelo sistema com o Serviço de Aplicativo e o Registro de Contêiner do Azure
- Como usar identidades gerenciadas atribuídas pelo usuário com o Serviço de Aplicativo e o Registro de Contêiner do Azure
Selecione a Imagem e o Rótulo a serem implantados. Você pode digitar o comando de inicialização no Arquivo de Inicialização.
Escolha a próxima etapa com base no valor do Tipo de Contêiner :
- Docker Compose: Selecione o repositório para suas imagens privadas. Selecione Escolher arquivo para carregar o arquivo do Docker Compose ou cole apenas o conteúdo do arquivo Docker Compose no Config.
- Contêiner único: selecione os valores de Imagem e Marca que você deseja implantar. Você pode digitar o comando de inicialização no Arquivo de Inicialização.
O Serviço de Aplicativo acrescenta a cadeia de caracteres no Arquivo de Inicialização ao final do comando docker run (como o segmento [COMMAND] [ARG...]) quando o contêiner é iniciado.
Habilitar CI/CD
Habilitar CI/CD
O Serviço de Aplicativo dá suporte à integração de CI/CD com o Registro de Contêiner do Azure e o Docker Hub. Para habilitar a integração de CI/CD, selecione Ativar na implantação contínua.
Observação
Se você selecionar o GitHub Actions na Origem, não verá essa opção porque CI/CD é tratado diretamente pelo GitHub Actions. Em vez disso, você verá uma seção Configuração de Fluxo de Trabalho , na qual você pode selecionar o arquivo de visualização para inspecionar o arquivo de fluxo de trabalho. O Azure registra esse arquivo no repositório de origem do GitHub selecionado para executar tarefas de compilação e implantação. Para obter mais informações, consulte Como o CI/CD funciona com o GitHub Actions.
Quando você habilita essa opção, o Serviço de Aplicativo adiciona um webhook ao repositório no Registro de Contêiner do Azure ou no Docker Hub. Seu repositório é postado para este webhook sempre que você atualiza a imagem selecionada com docker push. O Webhook faz com que o aplicativo do Serviço de Aplicativo seja reiniciado e executado docker pull para obter a imagem atualizada.
Para garantir que o webhook funcione corretamente, habilite a opção Credenciais básicas de publicação de autenticação em seu aplicativo Web. Caso contrário, você poderá receber um erro "401 não autorizado" para o Webhook.
Para verificar se a opção Credenciais de Publicação de Autenticação Básica está habilitada, acesse Configuração>Configurações Gerais em seu aplicativo web. Procure a seção Configuração da Plataforma e, em seguida, selecione a opção Credenciais básicas de publicação de autenticação .
Para outros registros privados, você pode postar no webhook manualmente ou como uma etapa em um pipeline de CI/CD. Na URL do Webhook, selecione o botão Copiar para obter a URL do webhook.
Selecione salvar para salvar suas configurações.
Observação
O suporte para aplicativos de vários contêineres (Docker Compose) é limitado. Para o Registro de Contêiner do Azure, o Serviço de Aplicativo cria um Webhook no registro selecionado, com o registro como escopo. Um docker push para qualquer repositório no registro (incluindo aqueles que não são referenciados pelo arquivo de Docker Compose) dispara uma reinicialização do aplicativo. Talvez você queira modificar o webhook para um escopo mais estreito. O Docker Hub não dá suporte a webhooks no nível do registro. Você deve adicionar manualmente os webhooks às imagens especificadas no arquivo Docker Compose.
Como o CI/CD funciona com o GitHub Actions
Se você selecionar GitHub Actions no menu suspenso Selecionar código-fonte, o Serviço de Aplicativo vai configurar a CI/CD das seguintes maneiras:
- Ele deposita um arquivo de fluxo de trabalho do GitHub Actions em seu repositório GitHub para lidar com tarefas de build e implantação no Serviço de Aplicativo.
- Ele adiciona credenciais do seu registro privado como segredos no GitHub. O arquivo de fluxo de trabalho gerado executa a
Azure/docker-loginação para entrar com seu registro privado. Em seguida, ele executadocker pushpara implantação nele. - Ele adiciona o perfil de publicação do seu app como um segredo do GitHub. O arquivo de fluxo de trabalho gerado usa esse segredo para autenticar com o Serviço de Aplicativo. Em seguida, ele executa a ação
Azure/webapps-deploypara configurar a imagem atualizada, o que dispara uma reinicialização do aplicativo para carregar a imagem. - Ele captura informações dos logs de execução do fluxo de trabalho e exibe-as na guia Logs no Centro de Implantação do aplicativo.
Você pode personalizar o provedor de compilação GitHub Actions como a seguir:
- Personalize o arquivo de fluxo de trabalho depois que ele for gerado em seu repositório GitHub. Para disparar uma reinicialização de aplicativo, o fluxo de trabalho deve terminar com a ação
Azure/webapps-deploy. Para obter mais informações, acesse a sintaxe de fluxo de trabalho do GitHub Actions. - Se o branch selecionado estiver protegido, você ainda poderá visualizar o arquivo de fluxo de trabalho sem salvar a configuração. Adicione-o e os segredos necessários do GitHub em seu repositório manualmente. Esse método não fornece integração de log com o portal do Azure.
- Em vez de um perfil de publicação, implante usando uma entidade de serviço no Microsoft Entra ID.
Autenticar com uma entidade de serviço
Essa configuração opcional substitui a autenticação padrão por perfis de publicação no arquivo de fluxo de trabalho gerado.
Gerar uma entidade de serviço usando o comando az ad sp create-for-rbac na CLI do Azure. No seguinte exemplo, substitua <subscription-id>, <group-name> e <app-name> por seus valores. Salve toda a saída JSON para a próxima etapa, incluindo o nível superior {}.
az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--json-auth
Importante
Para fins de segurança, conceda o acesso mínimo necessário ao principal de serviço. O escopo do exemplo anterior é limitado especificamente ao aplicativo do serviço de aplicativo, não a todo o grupo de recursos.
No GitHub, vá para o repositório e selecione Segredos de Configurações>>Adicionar um novo segredo. Insira toda a saída JSON gerada pelo comando da CLI do Azure no campo de valor do segredo. Dê ao segredo um nome como AZURE_CREDENTIALS.
No arquivo de fluxo de trabalho gerado pelo Centro de Implantação, revise a azure/webapps-deploy etapa com um código semelhante ao seguinte exemplo:
- name: Sign in to Azure
# Use the GitHub secret you added
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
# Remove publish-profile
- uses: azure/webapps-deploy@v2
with:
app-name: '<app-name>'
slot-name: 'production'
images: '<registry-server>/${{ secrets.AzureAppService_ContainerUsername_... }}/<image>:${{ github.sha }}'
- name: Sign out of Azure
run: |
az logout
Automatização com a CLI
Para configurar o registro de contêiner e a imagem do Docker, execute az webapp config container set.
az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name '<image>:<tag>' --docker-registry-server-url 'https://<registry-name>.azurecr.io' --docker-registry-server-user '<username>' --docker-registry-server-password '<password>'
Para configurar um aplicativo de vários contêineres (Docker Compose), prepare um arquivo do Docker Compose localmente e execute az webapp config container set com o --multicontainer-config-file parâmetro. Se o arquivo Docker Compose contiver imagens privadas, adicione --docker-registry-server-* parâmetros conforme mostrado no exemplo anterior.
az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>
Para configurar CI/CD do registro de contêiner para seu aplicativo, execute az webapp deployment container config com o parâmetro --enable-cd. O comando gera a URL do webhook, mas você deve criar manualmente o webhook no registro em uma etapa separada. O exemplo a seguir habilita CI/CD em seu aplicativo e usa a URL do webhook na saída para criar o webhook no Registro de Contêiner do Azure.
ci_cd_url=$(az webapp deployment container config --name <app-name> --resource-group <group-name> --enable-cd true --query CI_CD_URL --output tsv)
az acr webhook create --name <webhook-name> --registry <registry-name> --resource-group <group-name> --actions push --uri $ci_cd_url --scope '<image>:<tag>'
Conteúdo relacionado
- Registro de Contêiner do Azure
- Criar um aplicativo Web .NET Core no Serviço de Aplicativo no Linux
- Início Rápido: Executar um contêiner personalizado no Serviço de Aplicativo
- Serviço de Aplicativo nas Perguntas Frequentes do Linux
- Configurar contêineres personalizados
- Fluxos de trabalho de ações a serem implantados no Azure