다음을 통해 공유


자습서: 소스 코드에서 배포된 컨테이너 앱 업데이트

이 문서에서는 이전 문서에서 만든 컨테이너 앱을 업데이트하고 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 Container Apps 리포지토리에서 문제를 열어 GitHub에 알려주세요.

다음 단계

Azure Container Apps에서 서비스에 연결하는 방법을 계속 알아봅니다.