Tutorial: Atualizar um aplicativo de contêiner implantado a partir do código-fonte
Este artigo demonstra como atualizar o aplicativo de contêiner que você criou no artigo anterior, Criar e implantar seu código-fonte em Aplicativos de Contêiner do Azure.
Se você não concluiu as etapas no artigo anterior, pare aqui e retorne a este artigo quando todas as etapas estiverem concluídas.
Neste tutorial, você:
- Faça uma alteração de código em seu aplicativo.
- Envie suas alterações para o registro de contêiner com uma nova tag.
- Veja a aplicação atualizada num browser.
- Consulte o fluxo de log para exibir mensagens registradas.
Pré-requisitos
Para concluir este projeto, você precisa das ferramentas, recursos e aplicativo de contêiner criados no tutorial anterior, Criar e implantar a partir do código-fonte para Aplicativos de Contêiner do Azure.
Configurar
Se necessário, inicie sessão no Azure a partir da CLI.
az login
Crie variáveis de ambiente. Se as variáveis de ambiente do último tutorial ainda existirem no terminal, você poderá pular esta etapa.
Se você precisar recriar as variáveis de ambiente, primeiro precisará consultar o nome do Registro de contêiner criado no último artigo.
Execute o seguinte comando para consultar o registro de contêiner que você criou no último tutorial.
az acr list --query "[].{Name:name}" --output table
Depois de ter o nome do Registro do contêiner, substitua
<REGISTRY_NAME>
pelo nome do Registro e execute o seguinte comando.RESOURCE_GROUP="my-demo-group" CONTAINER_APP_NAME="my-demo-app" REGISTRY_NAME="<REGISTRY_NAME>"
Atualize e execute o código-fonte.
Substitua o conteúdo do pelo código a
Startup.cs
seguir.public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app, ILogger<Startup> logger) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { logger.LogInformation("Hello Logger!"); await context.Response.WriteAsync("Hello Logger!"); }); }); } }
Esta versão do código registra um registrador para gravar informações no console e no fluxo de log de aplicativos de contêiner.
Crie seu projeto na configuração Release.
dotnet build -c Release
Em seguida, execute o aplicativo para verificar se o código está implementado corretamente.
dotnet run --configuration Release
Criar e enviar a imagem para um registro
Agora que seu código está atualizado, você pode enviar a versão mais recente como uma nova imagem para o registro do contêiner.
Para garantir que a tag usada para seu registro seja exclusiva, use o seguinte comando para criar um nome de tag.
IMAGE_TAG=$(date +%s)
Agora você pode criar e enviar sua nova imagem de contêiner para o registro usando o seguinte comando.
az acr build \
-t $REGISTRY_NAME.azurecr.io/$CONTAINER_APP_NAME:$IMAGE_TAG \
-r $REGISTRY_NAME .
Criar uma nova revisão
Você pode criar uma nova revisão do seu aplicativo de contêiner com base na nova imagem de contêiner enviada por push para o registro.
az containerapp revision copy \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--image "$REGISTRY_NAME.azurecr.io/$CONTAINER_APP_NAME:$IMAGE_TAG" \
--output none
O revision copy
comando cria uma nova revisão do seu aplicativo de contêiner com a imagem de contêiner especificada do Registro.
Verificar a implementação
Agora que seu aplicativo está implantado, você pode consultar a URL com este comando.
az containerapp show \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--query properties.configuration.ingress.fqdn -o tsv
Em um navegador da Web, vá para o URL do aplicativo. Uma vez que o aplicativo de contêiner é iniciado, ele emite Hello Logger!.
Fluxo de log de consulta
Você acabou de ver a saída enviada para o navegador, então agora você pode usar o seguinte comando para ver as mensagens que estão sendo registradas no fluxo de log.
az containerapp logs show \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--follow
A consulta retorna uma resposta semelhante ao exemplo a seguir:
{"TimeStamp", "xxxx", "Log": "info: Microsoft.Hosting.Lifetime[0]"}
{"TimeStamp", "xxxx", "Log": "Hosting environment: Production"}
{"TimeStamp", "xxxx", "Log": "info: Microsoft.Hosting.Lifetime[0]"}
{"TimeStamp", "xxxx", "Log": "Content root path: /app"}
{"TimeStamp", "xxxx", "Log": "info: Startup[0]"}
{"TimeStamp", "xxxx", "Log": "Hello Logger!""}
Observe como você pode ver a mensagem de Hello Logger!
no fluxo.
Para parar de seguir o fluxo, você pode digitar Cmd/Ctrl + C para encerrar as mensagens.
Clean up resources (Limpar recursos)
Se você não for usar os recursos do Azure criados neste tutorial, poderá removê-los com o seguinte comando.
az group delete --name my-demo-group
Gorjeta
Tem problemas? Informe-nos no GitHub abrindo um problema no repositório de Aplicativos de Contêiner do Azure.
Próximos passos
Continue para saber como se conectar a serviços nos Aplicativos de Contêiner do Azure.