Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo explica como configurar a integração contínua e a entrega contínua (CI/CD) para uma imagem de contêiner personalizada de repositórios gerenciados do Registro de Contêiner do Azure ou do Docker Hub.
Dirija-se ao Centro de Implantação
No portal do Azure, vá para o painel de gerenciamento do seu aplicativo do Serviço de Aplicativo do Azure.
No menu lateral, em Deployment, selecione Centro de Deployment>Definições.
Selecione a fonte do código
No menu desdobrável Origem, selecione a fonte de implantação com base nos seguintes critérios:
- O Registo de Contentores configura CI/CD entre o seu registo de contentores e o App Service.
- Selecione a opção Ações do GitHub se mantiver o código-fonte da imagem do seu contentor no GitHub. Novas confirmações no repositório GitHub acionam a ação de implantação, que pode ser executada
docker buildedocker pushdiretamente no registro do 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 as ações do GitHub.- Para configurar o CI/CD com o Azure Pipelines, consulte Implantar um contêiner do Azure Web App a partir do Azure Pipelines.
- Para um aplicativo Docker Compose, selecione Registro de contêiner.
Se selecionares GitHub Actions, seleciona Autorizar e segue os prompts de autorização. Se você autorizou anteriormente com o GitHub, poderá implantar a partir do 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 a Ramificação a partir dos quais implantar.
Configurar definições do registo
Configurar definições do registo
Nota
Os contêineres sidecar irão substituir os aplicativos de múltiplos contêineres (Docker Compose) nos Serviços de Aplicações. Para começar, consulte 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 em Tipo de contêiner. Se não vires a lista suspensa Tipo de contentor, desliza para cima até Origem e seleciona Registo de contentores.
Na Origem de Registo, selecione a localização do registo dos seus contentores. Se não for o Registro de Contêiner do Azure ou o Hub do Docker, selecione Registro privado.
Nota
Se seu 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 estão acessíveis com as mesmas credenciais de usuário. Se seu aplicativo de vários contêineres usar apenas imagens públicas, selecione Docker Hub, mesmo que algumas imagens não estejam no Docker Hub.
Siga os próximos passos, selecionando o separador que corresponde à sua escolha.
- Registo de Contentores Azure
- Hub do Docker
- Registo privado
A lista suspensa Registo mostra os registos na mesma subscrição do seu aplicativo. Selecione o registro desejado.
Para implantar a partir de um registo numa subscrição diferente, selecione Registo privado na Fonte do registo.
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 a Tag para implantar. Podes escrever o comando de arranque no Ficheiro de Arranque.
Escolha o próximo passo com base no valor do Tipo de Contentor :
- Docker Compose: Selecione o registo para as suas imagens pessoais. Selecione Escolher arquivo para carregar seu arquivo Docker Compose ou simplesmente cole o conteúdo do arquivo Docker Compose em Config.
- Contentor Único: Selecione os valores para Imagem e Etiqueta que pretende implementar. Podes escrever o comando de arranque no Ficheiro de Arranque.
O serviço de aplicação adiciona a cadeia no Ficheiro de Arranque ao final do docker run comando (como o segmento [COMMAND] [ARG...]) quando o seu contentor inicia.
Ativar CI/CD
Ativar 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 Ativado em Implantação contínua.
Nota
Se selecionares GitHub Actions no Source, não vês esta opção porque o CI/CD é tratado diretamente pelas GitHub Actions. Em vez disso, você verá uma seção Configuração do fluxo de trabalho , onde você pode selecionar Visualizar arquivo para inspecionar o arquivo de fluxo de trabalho. A Azure confirma este ficheiro no repositório de origem GitHub selecionado para lidar com tarefas de compilação e implementação. Para obter mais informações, consulte Como o CI/CD funciona com as ações do GitHub.
Quando você habilita essa opção, o Serviço de Aplicativo adiciona um webhook ao seu repositório no Registro de Contêiner do Azure ou no Hub do Docker. O seu repositório publica neste webhook sempre que atualiza a imagem selecionada com docker push. O webhook faz com que a sua aplicação do Serviço de Aplicações seja reiniciada e execute docker pull para obter a imagem atualizada.
Para garantir que o webhook funciona corretamente, ative a opção Credenciais Básicas de Publicação de Autenticação na sua aplicação web. Se não o fizer, poderá receber um erro "401 não autorizado" para o webhook.
Para verificar se a opção Credenciais Básicas de Publicação de Autenticação está ativada, vá a Definições Gerais de Configuração> na sua aplicação web. Procure a seção Configuração da plataforma e selecione a opção Credenciais básicas de publicação de autenticação .
Para outros registos privados, pode publicar manualmente no webhook ou como passo num pipeline CI/CD. Em URL do Webhook, selecione o botão Copiar para obter o URL do Webhook.
Selecione Guardar para guardar as definições.
Nota
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. A docker push para qualquer repositório no Registro (incluindo aqueles não referenciados pelo arquivo Docker Compose) dispara uma reinicialização do aplicativo. Talvez você queira modificar o webhook para um escopo mais restrito. O Docker Hub não suporta webhooks no nível do Registro. Deve adicionar manualmente os webhooks às imagens especificadas no seu ficheiro Docker Compose.
Como o CI/CD funciona com as ações do GitHub
Se selecionar GitHub Actions no menu suspenso Selecionar código fonte, o App Service configura o CI/CD das seguintes maneiras:
- Ele deposita um arquivo de fluxo de trabalho do GitHub Actions em seu repositório do GitHub para lidar com tarefas de compilação e implantação no Serviço de Aplicativo.
- Ele adiciona as credenciais para seu registro privado como segredos do GitHub. O ficheiro de workflow gerado executa a
Azure/docker-loginação para iniciar sessão com o seu registo privado. Depois, é executadodocker pushpara se instalar nela. - Adiciona o perfil de publicação da sua aplicação como um segredo no GitHub. O ficheiro de workflow gerado utiliza este segredo para autenticar com o App Service. Depois, executa a
Azure/webapps-deployação para configurar a imagem atualizada, o que desencadeia um reinício da aplicação para puxar a imagem atualizada. - Captura informações dos registos de execução do fluxo de trabalho e mostra-as no separador Registos no Centro de Implementação da sua aplicação.
Você pode personalizar o provedor de compilação do GitHub Actions das seguintes maneiras:
- Personalize o arquivo de fluxo de trabalho depois que ele for gerado no repositório do GitHub. Para desencadear um reinício da aplicação, o fluxo de trabalho tem de terminar com a
Azure/webapps-deployação. Para mais informações, consulte Sintaxe de fluxo de trabalho para GitHub Actions. - Se a ramificação selecionada estiver protegida, você ainda poderá visualizar o arquivo de fluxo de trabalho sem salvar a configuração. Adicione-o e os segredos necessários do GitHub ao seu repositório manualmente. Esse método não oferece 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 um principal do serviço
Essa configuração opcional substitui a autenticação padrão por perfis de publicação no arquivo de fluxo de trabalho gerado.
Gere uma entidade de serviço utilizando o comando az ad sp create-for-rbac na CLI do Azure. No exemplo a seguir, substitua <subscription-id>, <group-name>, e <app-name> pelos seus próprios valores. Salve toda a saída JSON para a próxima etapa, incluindo o elemento de 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
Por segurança, conceda o acesso mínimo necessário à entidade de serviço. O escopo no exemplo anterior é limitado ao aplicativo do Serviço de Aplicativo específico e não a todo o grupo de recursos.
No GitHub, vá para o repositório e selecione Configurações>Segredos>Adicionar um novo segredo. Cole toda a saída JSON do comando CLI do Azure no campo de valor associado ao 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 código semelhante ao exemplo a seguir:
- 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
Automatize com CLI
Para configurar o registro do contêiner e a imagem do Docker, execute az webapp config container set.
- Registo de Contentores Azure
- Hub do Docker
- Registo privado
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 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 como mostrado no exemplo anterior.
az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>
Para configurar o CI/CD do registo de contentores para a sua aplicação, execute az webapp deployment container config com o parâmetro --enable-cd. O comando gera a URL do webhook, mas deve criar manualmente o webhook no seu registo numa etapa separada. O exemplo a seguir habilita CI/CD em seu aplicativo e, em seguida, 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>'