この記事では、前の記事「ソース コードをビルドして Azure Container Apps にデプロイする」で作成したコンテナー アプリを更新する方法について説明します。
前の記事の手順を完了していない場合は、ここで中断し、すべての手順が完了したら、この記事に戻ってください。
このチュートリアルでは、次のことを行います。
- アプリケーションにコードの変更を加えます。
- 新しいタグを使用してコンテナー レジストリに変更をプッシュします。
- 更新されたアプリをブラウザーで表示します。
- ログ ストリームにクエリを実行して、ログに記録されたメッセージを表示します。
前提条件
このプロジェクトを完了するには、前のチュートリアル「ソース コードから Azure Container Apps へのビルドとデプロイ」で作成したツール、リソース、コンテナー アプリが必要です。
セットアップ
必要に応じて、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!"); }); }); } }このバージョンのコードでは、コンソールと 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
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 Container Apps リポジトリでイシューを開いて、お知らせください。
次のステップ
引き続き、Azure Container Apps でサービスに接続する方法について学習します。