本文演示如何更新在上一篇文章中创建的容器应用, 生成源代码并将其部署到 Azure 容器应用。
如果尚未完成上一篇文章中的步骤,请在此处停止,并在完成所有步骤后返回到本文。
在本教程中,你将:
- 对应用程序进行代码更改。
- 使用新标记将更改推送到容器注册表。
- 在浏览器中查看更新的应用。
- 查询日志流以查看记录的消息。
先决条件
若要完成此项目,需要上一教程中创建的工具、资源和容器应用, 从源代码生成并部署到 Azure 容器应用。
设置
如有必要,请从 CLI 登录到 Azure。
az cloud set -n AzureChinaCloud az login # az cloud set -n AzureCloud //means return to Public Azure.创建环境变量。 如果上一篇教程中的环境变量仍存在于终端中,则可以跳过此步骤。
如果需要重新创建环境变量,首先需要查询在上一篇文章中创建的容器注册表名称。
运行以下命令,查询在上一教程中创建的容器注册表。
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.cn/$CONTAINER_APP_NAME:$IMAGE_TAG \
-r $REGISTRY_NAME .
创建新的修订
可以根据推送到注册表的新容器映像创建新的容器应用修订版。
az containerapp revision copy \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--image "$REGISTRY_NAME.azurecr.cn/$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
小窍门
遇到问题? 请在 GitHub 上的 Azure 容器应用存储库中打开一个问题,以便告知我们。