Migrar software personalizado para o Serviço de Aplicações do Azure usando um contêiner personalizado

Serviço de Aplicações do Azure fornece pilhas de aplicações predefinidas, como ASP.NET ou Node.js, no Windows. Essas stacks de aplicações funcionam no IIS. O ambiente Windows pré-configurado bloqueia o sistema operativo de:

  • Acesso administrativo.
  • Instalações de software.
  • Alterações no cache de assembly global.

Para obter mais informações, consulte Funcionalidade do sistema operacional no App Service.

Pode implementar uma imagem personalizada do Windows, a partir do Visual Studio, para efetuar as alterações ao sistema operativo de que a sua aplicação precisa. Isso facilita a migração de um aplicativo local que requer uma configuração personalizada de sistema operacional e software. Este tutorial demonstra como migrar para o App Service uma aplicação ASP.NET que utiliza tipos de letra personalizados instalados na biblioteca de tipos de letra do Windows. Implante uma imagem do Windows configurada de forma personalizada do Visual Studio para o Azure Container Registry e execute-a no App Service.

Captura de ecrã que mostra a aplicação Web em execução num contentor do Windows.

Pré-requisitos

Configurar a aplicação localmente

Descarregar a amostra

Neste passo, vai configurar o projeto .NET local.

O projeto de exemplo contém um aplicativo ASP.NET simples que usa uma fonte personalizada instalada na biblioteca de fontes do Windows. Não é necessário instalar fontes. No entanto, a amostra é um exemplo de uma aplicação integrada no sistema operativo subjacente. Para migrar uma app como esta para o App Service, tem de rearquitetar o seu código para remover a integração, ou migrá-la tal como está num contentor personalizado do Windows.

Instalar o tipo de letra

No Windows Explorer, vá para custom-font-win-container-master/CustomFontSample, clique com o botão direito do mouse em FrederickatheGreat-Regular.ttf e selecione Instalar.

Este tipo de letra está disponível publicamente em Google Fonts.

Inicie a aplicação

Abra o ficheiro custom-font-win-container-master/CustomFontSample.sln no Visual Studio.

Selecione Ctrl+F5 para executar o aplicativo sem depuração. A aplicação é apresentada no browser predefinido.

Captura de ecrã mostrando a aplicação exibida no navegador predefinido.

Como o aplicativo usa uma fonte instalada, o aplicativo não pode ser executado na área restrita do App Service. No entanto, pode implementá-lo usando um contentor do Windows, porque pode instalar a fonte no contentor do Windows.

Configurar o container do Windows

No Explorador de Soluções, clique com o botão direito do rato no projeto CustomFontSample e selecione Adicionar>Suporte para Orquestrador de Contentores.

Captura de ecrã do projeto CustomFontSample no Explorador de Soluções. Os itens de menu Adicionar e Suporte ao Container Orchestrator são realçados.

Selecione Docker Compose>OK.

O seu projeto está agora definido para ser executado num contentor do Windows. É adicionado um Dockerfile ao projeto CustomFontSample e um projeto docker-compose é adicionado à solução.

No Explorador de Soluções, abra o Dockerfile.

Tem de utilizar uma imagem principal suportada. Altere a imagem hierárquica principal, substituindo a linha FROM pelo seguinte código:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019

Adicione a seguinte linha ao final do ficheiro e salve-o:

RUN ${source:-obj/Docker/publish/InstallFont.ps1}

Pode encontrar InstallFont.ps1 no projeto CustomFontSample. É um script simples que instala o tipo de letra. Você pode encontrar uma versão mais complexa do script na Galeria do PowerShell.

Nota

Para testar o contentor do Windows localmente, certifique-se de que o Docker está iniciado na sua máquina local.

Publicar no Registo de Contentores do Azure

O Azure Container Registry pode armazenar as suas imagens para implementações de contentores. Pode configurar o App Service para usar imagens alojadas no Container Registry.

Abra a janela Publicar

No Explorador de Soluções, clique com o botão direito do rato no projeto CustomFontSample e selecione Publicar.

Captura de ecrã do projeto CustomFontSample no Explorador de Soluções. O item de menu Publicar é realçado.

Criar e publicar o registo

  1. Na janela Publicar , selecione Azure e, em seguida, selecione Avançar.

  2. Selecione Azure Container Registry e, em seguida, selecione Seguinte.

  3. Selecione a subscrição onde pretende publicar o contentor e, em seguida, selecione Criar novo.

Captura de ecrã que mostra a janela de Publicação. O botão Criar novo é realçado.

Iniciar sessão com uma conta do Azure

Na janela Azure Container Registry, selecione Adicionar uma conta e, em seguida, inicie sessão na sua subscrição do Azure. Se você já estiver conectado, selecione a conta que contém a assinatura desejada na lista suspensa.

Configurar o registo

Configure o novo registo de contentores usando os valores sugeridos na tabela a seguir como guia. Quando terminar, selecione Criar.

Configuração Valor sugerido
Prefixo DNS Mantenha o nome do registo de dados gerado ou altere-o para outro nome exclusivo.
Grupo de recursos Selecione New, digite myResourceGroup e selecione OK.
SKU Básico. Para obter mais informações, consulte Escalões de preços.
Localização do registo Europa Ocidental

Captura de ecrã da janela Azure Container Registry.

Selecione Concluir.

Uma janela do terminal é aberta e exibe o progresso da implantação da imagem. Aguarde pela conclusão da implantação.

Iniciar sessão no Azure

Inicie sessão no portal do Azure.

Criar uma aplicação Web

Selecione Criar um recurso e, em seguida, selecione Criar em Aplicativo Web.

Configurar aspetos básicos da aplicação

No separador Básico, defina as configurações usando a tabela seguinte como guia.

Configuração Valor sugerido
Subscrição Certifique-se de que a subscrição correta está selecionada.
Grupo de recursos Selecione Criar novo, digite myResourceGroup e selecione OK.
Nome Insira um nome exclusivo. O URL da aplicação Web é https://<app-name>.azurewebsites.net, em que <app-name> é o nome da aplicação.
Publicar Contentor
Sistema Operativo Windows
Região Europa Oeste
Plano Windows Selecione Criar novo, insira myAppServicePlan e selecione OK.

A sua guia Noções básicas deve ser semelhante a esta:

Captura de ecrã do separador Noções básicas utilizado para configurar a aplicação Web.

Configurar o contêiner do Windows

No separador Contentor, configure o seu contentor personalizado do Windows, conforme mostrado na tabela seguinte e, em seguida, selecione Rever + criar.

Configuração Valor sugerido
Fonte da imagem Azure Container Registry
Registo Selecione o registo que criou anteriormente.
Imagem customfontsample
Tag mais recente

Concluir a criação da aplicação

Selecione Criar e aguarde até que o Azure crie os recursos necessários.

Navegue para a aplicação Web

Quando a implementação estiver concluída, uma mensagem de notificação será exibida:

Captura de ecrã que mostra a mensagem de notificação.

  1. Selecione Ir para recurso.

  2. Na página do aplicativo, selecione o link sob URL.

É aberta uma página nova do browser na seguinte página:

Captura de ecrã que mostra a nova página do navegador para a aplicação Web.

Aguarde alguns minutos e tente novamente, até obter a página inicial com a fonte esperada:

Captura de ecrã da página inicial com o tipo de letra que configurou.

Parabéns! Você migrou um aplicativo ASP.NET para o App Service em um contêiner do Windows.

Exibir os logs de inicialização do contêiner

Pode levar algum tempo para o contêiner do Windows carregar. Para ver o progresso, vá para o seguinte URL. (Substitua <app-name> pelo nome da sua aplicação.)

https://<app-name>.scm.azurewebsites.net/api/logstream

Os logs em fluxo têm este aspeto:

14/09/2018 23:16:19.889 INFO - Site: fonts-win-container - Creating container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest.
14/09/2018 23:16:19.928 INFO - Site: fonts-win-container - Create container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest succeeded. Container Id 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:23.405 INFO - Site: fonts-win-container - Start container succeeded. Container: 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Configuring container
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container start-up and configuration completed successfully

O Serviço de Aplicações do Azure usa a tecnologia de contentores do Docker para alojar imagens incorporadas e imagens personalizadas. Para ver uma lista de imagens internas, execute o comando CLI do Azure, az webapp list-runtimes --os linux. Se essas imagens não satisfizerem as suas necessidades, pode criar e implementar uma imagem personalizada.

Nota

O seu contentor deve ter como alvo a arquitetura x86-64. ARM64 não é suportado.

Neste tutorial, irá aprender a:

  • Efetue push de uma imagem Docker personalizada para o Azure Container Registry.
  • Implante a imagem personalizada no App Service.
  • Configure as variáveis de ambiente.
  • Puxe a imagem para o App Service usando uma identidade gerenciada.
  • Acesse logs de diagnóstico.
  • Habilite o CI/CD do Container Registry para o App Service.
  • Conecte-se ao contêiner usando SSH.

A conclusão deste tutorial implica um pequeno custo na sua conta Azure para o registo de contentores e pode implicar custos adicionais se alojar o contentor por mais de um mês.

Configurar o seu ambiente inicial

Este tutorial requer a versão 2.0.80 ou posterior da CLI do Azure. Se você estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

  • Instale o Docker, que utiliza para criar imagens Docker. A instalação do Docker pode exigir uma reinicialização do computador.

Depois de instalar o Docker, abra uma janela do terminal e verifique se o docker está instalado:

docker --version

Clone ou baixe o aplicativo de exemplo

Você pode obter o exemplo para este tutorial via clone Git ou download.

Clone o repositório usando o Git Bash

Clone o repositório de exemplo:

git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input

Certifique-se de incluir o --config core.autocrlf=input argumento para garantir terminações de linha adequadas em arquivos que são usados dentro do contêiner Linux.

Em seguida, navegue até a pasta:

cd docker-django-webapp-linux

Baixe o ZIP do GitHub

Em vez de usar o clone do Git, pode ir a https://github.com/Azure-Samples/docker-django-webapp-linux e selecionar Code>Local>Download ZIP.

Descompacte o arquivo ZIP para uma pasta chamada docker-django-webapp-linux.

Em seguida, abra uma janela de terminal na pasta docker-django-webapp-linux.

Prepare o recipiente da amostra

O terminal do navegador mais recente e az webapp exec fornecem acesso autenticado a contentores Linux em execução sem necessidade de um servidor SSH ou de uma palavra-passe SSH embutida na imagem. O Legacy Kudu WebSSH e o acesso az webapp ssh poderão ainda exigir um servidor SSH. O repositório de exemplo contém uma configuração SSH herdada. Antes de compilar, substitua o conteúdo do seu Dockerfile pela seguinte configuração apenas para aplicação:

FROM tiangolo/uwsgi-nginx-flask:python3.6

RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt --no-cache-dir
ADD . /code/

COPY init.sh /usr/local/bin/

RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 8000

ENTRYPOINT ["init.sh"]

Substitua o conteúdo da init.sh pelo seguinte script, mantendo as terminações das linhas do Linux:

#!/bin/bash
set -e

exec python /code/manage.py runserver 0.0.0.0:8000

Remove o ficheiro sshd_config legado da tua pasta local de exemplos para ADD . /code/ não o copiar para a imagem.

O Dockerfile instala as dependências da aplicação, copia a aplicação e o script de arranque, e expõe a porta da aplicação. O entrypoint inicia apenas a aplicação Python. Estas alterações removem a instalação e credenciais SSH da amostra. A imagem inclui /bin/bash para o terminal do navegador mais recente e o shell padrão az webapp exec .

Crie e teste a imagem localmente

Nota

O Docker Hub impõe cotas sobre o número de pulls anónimos por IP e o número de pulls autenticados por utilizador gratuito. Se você notar que seus pulls do Docker Hub estão sendo limitados, tente executar docker login se ainda não estiver conectado.

  1. Execute o seguinte comando para gerar a imagem:

    docker build --tag appsvc-tutorial-custom-image .
    
  2. Teste se a compilação funciona executando o contêiner do Docker localmente:

    docker run -it -p 8000:8000 appsvc-tutorial-custom-image
    

    Este docker run comando especifica a porta usando o -p argumento e inclui o nome da imagem. -it permite pará-lo usando Ctrl+C.

    Dica

    Se você estiver executando no Windows e vir o erro *standard_init_linux.go:211: exec user process caused "no such file or directory", o arquivo init.sh contém terminações de linha CRLF em vez das terminações LF esperadas. Este erro acontece se usou o Git para clonar o repositório de exemplo, mas omitiu o parâmetro --config core.autocrlf=input. Nesse caso, clone o repositório novamente com o --config argumento. Você também pode ver o erro se editou init.sh e o salvou com terminações CRLF. Nesse caso, guarde o ficheiro novamente apenas com terminações LF.

  3. Navegue até http://localhost:8000 para verificar se a aplicação Web e o contentor estão a funcionar corretamente.

    Captura de ecrã dos resultados do teste.

Criar uma identidade gerida atribuída pelo utilizador

O App Service pode usar uma identidade gerida predefinida ou uma identidade gerida atribuída pelo utilizador para autenticar com um registo de contentores. Neste tutorial, irá utilizar uma identidade gerida atribuída pelo utilizador.

  1. Execute o comando az group create para criar um grupo de recursos:

    az group create --name msdocs-custom-container-tutorial --location westeurope
    

    Você pode alterar o valor --location para especificar uma região perto de si.

  2. Crie uma identidade gerenciada no grupo de recursos:

    az identity create --name myID --resource-group msdocs-custom-container-tutorial
    

Criar um registry de contentores

  1. Crie um registo de contentores utilizando o seguinte comando az acr create. Substitua <registry-name> por um nome exclusivo para o seu registo de sistema. O nome deve conter apenas letras e números e deve ser exclusivo em todo o Azure.

    az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled true
    

    O parâmetro --admin-enabled permite enviar imagens por push para o registo usando credenciais administrativas.

  2. Recupere as credenciais administrativas executando o az credential acr show comando:

    az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>
    

    A saída JSON deste comando fornece duas palavras-passe juntamente com o nome de utilizador do registry.

Envie a imagem de exemplo para o Container Registry

Nesta seção, envia a imagem para o Container Registry, que é usado pelo App Service posteriormente.

  1. No terminal local onde criou a imagem de exemplo, use o comando docker login para iniciar sessão no registo de contentores:

    docker login <registry-name>.azurecr.io --username <registry-username>
    

    Substitua <registry-name> e <registry-username> por valores das etapas anteriores. Quando solicitado, introduza uma das palavras-passe da secção anterior.

    Use o mesmo nome do registo em todas as etapas restantes desta secção.

  2. Quando o início de sessão for bem-sucedido, atribua uma etiqueta à sua imagem Docker local para o registo:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  3. Use o comando docker push para enviar a imagem para o registo:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    Carregar a imagem pela primeira vez pode demorar alguns minutos porque inclui a imagem base. Os carregamentos subsequentes são normalmente mais rápidos.

    Enquanto aguarda, pode concluir as etapas na próxima secção para configurar o App Service para implementar a partir do registo.

Autorizar a identidade gerida para o seu registo

A identidade gerida que criou ainda não tem autorização para extrair do registo de contentores. Nesta etapa, ativa a autorização.

  1. Recupere o ID principal da identidade gerenciada:

    principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)
    
  2. Recupere a ID do recurso para o registo do contentor:

    registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)
    
  3. Conceda à identidade gerida permissão para aceder ao registo de contentores:

    az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"
    

    Para obter mais informações sobre essas permissões, consulte O que é o controle de acesso baseado em função do Azure?.

Criar a aplicação Web

  1. Crie um plano do Serviço de Aplicativo usando o az appservice plan create comando:

    az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linux
    

    Um plano do App Service corresponde à máquina virtual que hospeda a aplicação Web. Por padrão, o comando anterior usa um escalão tarifário B1 económico que é gratuito durante o primeiro mês. Você pode especificar o escalão usando o parâmetro --sku.

  2. Crie o aplicativo Web com o az webapp create comando:

    az webapp create --resource-group msdocs-custom-container-tutorial --plan myAppServicePlan --name <app-name> --deployment-container-image-name <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    Substitua <app-name> por um nome para o aplicativo Web. O nome tem de ser exclusivo em todo o Azure. Substitua <registry-name> também pelo nome do seu registry da secção anterior.

    Dica

    Você pode recuperar as configurações de contêiner do aplicativo Web a qualquer momento com o comando az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorial. A imagem é especificada na propriedade DOCKER_CUSTOM_IMAGE_NAME. Quando a aplicação Web é implantada por meio de modelos do Azure DevOps ou do Azure Resource Manager, a imagem também pode aparecer numa propriedade chamada LinuxFxVersion. Ambas as propriedades servem para o mesmo fim. Se ambos estiverem presentes na configuração do aplicativo Web, LinuxFxVersion terá precedência.

Configurar a aplicação Web

Nesta etapa, configura a aplicação Web da seguinte forma:

  • Configure a aplicação para enviar pedidos para a porta 8000. O contentor de amostra está escutando na porta 8000 para solicitações da Web.
  • Configure seu aplicativo para usar a identidade gerenciada para extrair imagens do registro do contêiner.
  • Configure a implantação contínua a partir do registo do contentor. (Cada envio de imagem para o registo acionará a sua aplicação para extrair a nova imagem.) Esta etapa não é necessária para configurar a sua aplicação Web para extrair do registo do contentor, mas pode notificar a aplicação Web quando uma nova imagem for enviada por push para o registo. Se você não concluir esta etapa, deverá acionar manualmente um pull de imagem reiniciando o aplicativo Web.
  1. Use az webapp config appsettings set para definir a WEBSITES_PORT variável de ambiente conforme esperado pelo código do aplicativo:

    az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000
    

    Substitua <app-name> pelo nome usado na etapa anterior.

  2. Habilite a identidade gerenciada atribuída pelo usuário no aplicativo Web usando o az webapp identity assign comando:

    id=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query id --output tsv)
    az webapp identity assign --resource-group msdocs-custom-container-tutorial --name <app-name> --identities $id
    

    Substitua <app-name> pelo nome usado na etapa anterior.

  3. Configure o seu aplicativo para obter do Container Registry usando identidades geridas.

    appConfig=$(az webapp config show --resource-group msdocs-custom-container-tutorial --name <app-name> --query id --output tsv)
    az resource update --ids $appConfig --set properties.acrUseManagedIdentityCreds=True
    

    Substitua <app-name> pelo nome usado na etapa anterior.

  4. Defina o ID de cliente que a sua aplicação Web usa para extrair do Container Registry. Esta etapa não é necessária se utilizar a identidade gerida atribuída pelo sistema.

    clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv)
    az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientId
    
  5. Ative o CI/CD no App Service.

    cicdUrl=$(az webapp deployment container config --enable-cd true --name <app-name> --resource-group msdocs-custom-container-tutorial --query CI_CD_URL --output tsv)
    

    CI_CD_URL é um URL que o App Service gera para você. O seu registo deve usar este URL para notificar o App Service de que foi efetuado um push de imagem. Na verdade, ele não cria o webhook para você.

  6. Crie um webhook em seu registo de contentor. Use o CI_CD_URL que obteve na última etapa.

    az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latest
    
  7. Para testar se o webhook está configurado corretamente, execute ping no webhook e veja se recebe uma resposta 200 OK.

    eventId=$(az acr webhook ping --name appserviceCD --registry <registry-name> --query id --output tsv)
    az acr webhook list-events --name appserviceCD --registry <registry-name> --query "[?id=='$eventId'].eventResponseMessage"
    

    Dica

    Para ver todas as informações sobre todos os eventos do webhook, remova o parâmetro --query.

    Se estiver a transmitir o registo do contentor, deverá ver uma mensagem Starting container for site após o ping do webhook, porque o webhook faz com que a aplicação reinicie.

Navegue até à aplicação Web

Para testar a aplicação, navegue até https://<app-name>.azurewebsites.net. Substitua <app-name> pelo nome da sua aplicação Web.

Na primeira vez que tentar aceder à aplicação, pode demorar algum tempo até que a aplicação responda, porque o App Service tem de extrair a imagem inteira do registo. Se o navegador exceder o tempo limite, basta atualizar a página. Depois que a imagem inicial é transferida, os testes subsequentes serão executados muito mais rápido.

Captura de ecrã da aplicação Web em execução num browser.

Aceder aos registos de diagnóstico

Enquanto está à espera que o App Service puxe a imagem, é útil ver exatamente o que o App Service está a fazer, transmitindo os registos do contentor para o terminal.

  1. Ative o registo de logs do contentor:

    az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystem
    
  2. Habilite o fluxo de log:

    az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorial
    

    Se não vir os registos da consola imediatamente, volte a consultar dentro de 30 segundos.

    Você também pode inspecionar os ficheiros de registo num navegador acessando https://<app-name>.scm.azurewebsites.net/api/logs/docker.

  3. Para interromper o streaming de logs a qualquer momento, selecione Ctrl+C.

Modificar o código da aplicação e reimplantar

Nesta seção, faz-se uma alteração no código da aplicação Web, recria-se a imagem e envia-se para o registo do contentor. Em seguida, o App Service extrai automaticamente a imagem atualizada do registo para atualizar a aplicação Web em execução.

  1. Na sua pasta local docker-django-webapp-linux, abra o arquivo app/templates/app/index.html.

  2. Altere o primeiro elemento HTML para corresponder ao código a seguir.

    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">Azure App Service - Updated Here!</a>
        </div>
      </div>
    </nav>
    
  3. Guardar as suas alterações.

  4. Vá para a pasta docker-django-webapp-linux e reconstrua a imagem:

    docker build --tag appsvc-tutorial-custom-image .
    
  5. Atualize a tag da imagem para latest:

    docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    

    Substitua <registry-name> pelo nome do seu registo do sistema.

  6. Envie a imagem para o registry:

    docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latest
    
  7. Quando o envio de imagem estiver concluído, o webhook notificará o App Service sobre o envio por push e o App Service tentará extrair a imagem atualizada. Aguarde alguns minutos e verifique se a atualização foi implantada acessando https://<app-name>.azurewebsites.net.

Ligue-se ao contentor utilizando SSH

Quando o contentor está em execução, pode aceder a ele através do proxy autenticado Kudu do App Service, usando o terminal do navegador mais recente ou az webapp exec. Não precisas de instalar ou iniciar um servidor SSH na imagem para estas opções.

Para pré-requisitos de acesso e controlos de aplicação ou slot, consulte Abrir uma shell de contentor (SSH) e executar comandos.

Abra a conexão SSH com o contêiner

  1. Use o CLI do Azure 2.90.0 ou posterior e inicie sessão na sua conta Azure. Abra um shell interativo no seu terminal local com o comando de pré-visualização az webapp exec :

    az webapp exec --resource-group msdocs-custom-container-tutorial --name <app-name>
    
  2. Analise os processos a correr dentro da aplicação usando top, se estiver disponível na imagem.

Para execução de comandos em modo destacado em vez de uma sessão interativa, veja Executar comandos sem uma sessão interativa. A aceitação da solicitação não confirma que um comando foi concluído com sucesso.

Limpar recursos

Os recursos criados neste artigo podem implicar custos contínuos. Para limpar os recursos, só precisa de eliminar o grupo de recursos que os contém:

az group delete --name msdocs-custom-container-tutorial

Próximos passos

O que aprendeu:

  • Implemente uma imagem personalizada num registo privado de contentores.
  • Implante a imagem personalizada no App Service.
  • Atualize e reimplemente a imagem.
  • Aceda aos registos de diagnóstico.
  • Conecte-se ao contêiner usando SSH.
  • Envie uma imagem personalizada do Docker para o Container Registry.
  • Implante a imagem personalizada no App Service.
  • Configure as variáveis de ambiente.
  • Puxe a imagem para o App Service usando uma identidade gerenciada.
  • Acesse logs de diagnóstico.
  • Habilite o CI/CD do Container Registry para o App Service.
  • Conecte-se ao contêiner usando SSH.

Vá para o próximo tutorial:

Ou confira outros recursos: