共用方式為


教學課程:更新從原始程式碼部署的容器應用程式

本文示範如何更新您在上一篇文章中建立的容器應用程式: 建置原始程式碼並將其部署至 Azure Container Apps

如果您尚未完成上一篇文章中的步驟,請在此停止並返回本文,一旦完成所有步驟。

在本教學課程中,您會:

  • 對您的應用程式進行程式碼變更。
  • 使用新的標記將變更推送至容器登錄。
  • 在瀏覽器中檢視更新的應用程式。
  • 查詢記錄數據流以檢視記錄的訊息。

必要條件

若要完成此專案,您需要在上一個教學課程中建立的工具、資源和容器應用程式, 從原始程式碼建置和部署至 Azure Container Apps

設定

  1. 如有必要,請從 CLI 登入 Azure。

    az login
    
  2. 建立環境變數。 如果上一個教學課程中的環境變數仍存在於終端機中,您可以略過此步驟。

    如果您需要重新建立環境變數,您必須先查詢您在上一篇文章中建立的容器登錄名稱。

    執行下列命令來查詢您在上一個教學課程中建立的容器登錄。

    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>"
    
  3. 更新並執行您的原始程式碼。

    以下列程式碼取代 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!");
                });
            });
        }
    }
    

    此版本的程式代碼會註冊記錄器,以將資訊寫出至主控台和 Container Apps 記錄數據流。

    在發行組態中建置您的專案。

    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

在網頁瀏覽器中,移至應用程式的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 Container Apps 中的服務。