你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文演示如何更新在上一篇文章中创建的容器应用:生成源代码并将其部署到 Azure 容器应用。
如果尚未完成上一篇文章中的步骤,请在此处停止,并在完成所有步骤后返回到本文。
本教程介绍以下内容:
- 对应用程序进行代码更改。
- 使用新标记将更改推送到容器注册表。
- 在浏览器中查看更新后的应用。
- 查询日志流以查看记录的消息。
先决条件
若要完成此项目,需要上一教程中创建的工具、资源和容器应用:生成源代码并将其部署到 Azure 容器应用。
安装
如有必要,请从 CLI 登录到 Azure。
az login
创建环境变量。 如果上一篇教程中的环境变量仍存在于你的终端中,则可以跳过此步骤。
如果需要重新创建环境变量,首先需要查询在上一篇文章中创建的容器注册表名称。
运行以下命令,查询在上一教程中创建的容器注册表。
az acr list --query "[].{Name:name}" --output table
拥有容器注册表名称后,将
<REGISTRY_NAME>
替换为注册表名称并运行以下命令。RESOURCE_GROUP="my-demo-group" CONTAINER_APP_NAME="my-demo-app" REGISTRY_NAME="<REGISTRY_NAME>"
更新并运行源代码。
将
Startup.cs
的内容替换为以下代码。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!"); }); }); } }
此版本的代码会注册一个记录器,用于将信息写出到控制台和容器应用日志流。
在发布配置中生成项目。
dotnet build -c Release
接下来,运行应用程序以验证代码是否已正确实现。
dotnet run --configuration Release
生成映像并将其推送到注册表
代码更新后,可以将最新版本作为新映像推送到容器注册表。
若要确保用于注册表的标记是唯一的,请使用以下命令创建标记名称。
IMAGE_TAG=$(date +%s)
现在,可以使用以下命令生成新容器映像并将其推送到注册表。
az acr build \
-t $REGISTRY_NAME.azurecr.io/$CONTAINER_APP_NAME:$IMAGE_TAG \
-r $REGISTRY_NAME .
创建新版本
可以根据推送到注册表的新容器映像创建新的容器应用修订版。
az containerapp revision copy \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--image "$REGISTRY_NAME.azurecr.io/$CONTAINER_APP_NAME:$IMAGE_TAG" \
--output none
revision copy
命令使用注册表中的指定容器映像创建容器应用的新修订版。
验证部署
部署应用程序后,可以使用此命令查询 URL。
az containerapp show \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--query properties.configuration.ingress.fqdn -o tsv
在 Web 浏览器中,转到应用的 URL。 启动容器应用后,它将输出“Hello Logger!”。
查询日志流
你刚刚看到了发送到浏览器的输出,现在可以使用以下命令查看日志流中记录的消息。
az containerapp logs show \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--follow
该查询将返回类似以下示例的响应:
{"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!""}
请注意,你会在流中看到 Hello Logger!
的消息。
若要停止跟踪流,可以输入 Cmd/Ctrl + C 终止消息。
清理资源
如果不打算使用本教程中创建的 Azure 资源,可以使用以下命令将其移除。
az group delete --name my-demo-group
提示
遇到问题? 在 Azure 容器应用存储库中提交问题,告知我们有关 GitHub 的信息。
后续步骤
继续了解如何连接到 Azure 容器应用中的服务。