Azure의 Python Container Apps 개요

이 문서에서는 Python 프로젝트 코드(예: 웹앱)에서 Azure에서 배포된 Docker 컨테이너로 이동하는 방법을 설명합니다. 컨테이너화의 일반적인 프로세스, Azure의 컨테이너에 대한 배포 옵션 및 Azure의 컨테이너에 대한 Python 관련 구성에 대해 설명합니다.

Docker 컨테이너의 특성은 코드에서 Docker 이미지를 만들고 Azure의 컨테이너에 해당 이미지를 배포하는 것은 프로그래밍 언어 간에 유사합니다. 언어별 고려 사항인 이 경우 Python은 Azure의 컨테이너화 프로세스 중에 구성되며, 특히 Django, Flask 및 FastAPI와 같은 Python 웹 프레임워크를 지원하는 Dockerfile 구조 및 구성에 있습니다.

컨테이너 워크플로 시나리오

Python 컨테이너 개발의 경우 코드에서 컨테이너로 이동하기 위한 몇 가지 일반적인 워크플로는 다음과 같습니다.

시나리오 설명 워크플로
Dev 개발 환경에서 Python Docker 이미지를 빌드합니다. 코드: 개발 환경에 코드를 복제하는 git입니다(Docker가 설치됨).

빌드: Docker CLI, VS Code(확장 포함), PyCharm(플러그 인 포함)을 사용합니다. Python Docker 이미지 및 컨테이너 작업 섹션에서 설명합니다.

테스트: Docker 컨테이너의 개발 환경에서.

푸시: Azure Container Registry, Docker Hub 또는 프라이빗 레지스트리와 같은 레지스트리로 이동합니다.

배포: 레지스트리에서 Azure 서비스로.
하이브리드 개발 환경에서 Azure에서 Python Docker 이미지를 빌드합니다. 코드: 개발 환경에 코드를 복제하는 git입니다(Docker를 설치할 필요가 없음).

빌드: VS Code(확장 사용), Azure CLI.

푸시: Azure Container Registry로

배포: 레지스트리에서 Azure 서비스로.
Azure 클라우드의 모든 항목 Azure Cloud Shell을 사용하여 GitHub 리포지토리에서 Python Docker 이미지 코드를 빌드합니다. 코드: Git은 GitHub 리포지토리를 Azure Cloud Shell에 복제합니다.

빌드: Azure Cloud Shell에서 Azure CLI 또는 Docker CLI를 사용합니다.

푸시: Azure Container Registry, Docker Hub 또는 프라이빗 레지스트리와 같은 레지스트리에 연결합니다.

배포: 레지스트리에서 Azure 서비스로.

이러한 워크플로의 최종 목표는 다음 섹션에 나열된 대로 Docker 컨테이너를 지원하는 Azure 리소스 중 하나에서 실행되는 컨테이너를 만드는 것입니다.

개발 환경은 Visual Studio Code 또는 PyCharm, Codespaces(클라우드에서 호스트되는 개발 환경) 또는 Visual Studio Dev Containers(개발 환경으로서의 컨테이너)를 사용하는 로컬 워크스테이션일 수 있습니다.

Azure의 배포 컨테이너 옵션

Python 컨테이너 앱은 다음 서비스에서 지원됩니다.

서비스 설명
Web App for Containers 웹 사이트 및 웹 API를 포함하여 컨테이너화된 웹 애플리케이션에 대한 완전 관리형 호스팅 서비스입니다. Azure App Service의 컨테이너화된 웹앱은 필요에 따라 크기를 조정할 수 있으며 Docker Hub, Azure Container Registry 및 GitHub와 함께 간소화된 CI/CD 워크플로를 사용할 수 있습니다. 개발자가 완전 관리형 Azure 앱 Service 플랫폼을 활용하기는 쉽지만 앱 및 모든 종속성을 포함하는 배포 가능한 단일 아티팩트를 원하는 사용자에게 이상적입니다.

예: Azure 앱 Service에 Flask 또는 FastPI 웹앱을 배포합니다.
ACA(Azure Container Apps) Kubernetes에서 제공하는 완전 관리형 서버리스 컨테이너 서비스 및 Dapr, KEDA 및 envoy같은 오픈 소스 기술입니다. 모범 사례에 따라 범용 컨테이너에 최적화됩니다. 클러스터 인프라는 ACA에서 관리되며 Kubernetes API에 대한 직접 액세스는 지원되지 않습니다. 인증서, 수정 버전, 크기 조정 및 환경을 포함하여 컨테이너를 기반으로 하는 많은 애플리케이션 관련 개념을 제공합니다. Kubernetes의 기본 복잡성을 관리할 필요 없이 컨테이너 마이크로 서비스 빌드를 시작하려는 팀에 적합합니다.

예: Azure Container Apps에 Flask 또는 FastPI 웹앱을 배포합니다.
ACI(Azure Container Instances) 요청 시 단일 Hyper-V 격리 컨테이너 Pod를 제공하는 서버리스 제품입니다. 프로비전된 리소스가 아닌 사용량에 따라 청구됩니다. 스케일링, 부하 분산 및 인증서와 같은 개념은 ACI 컨테이너와 함께 제공되지 않습니다. 사용자는 종종 다른 서비스를 통해 ACI와 상호 작용합니다. 예를 들어 오케스트레이션을 위한 AKS입니다. Azure Container Apps가 최적화하는 시나리오에 맞지 않는 덜 "의견 있는" 구성 요소 블록이 필요한 경우에 이상적입니다.

예: Azure Container Instances에 배포할 컨테이너 이미지를 만듭니다. (이 자습서는 Python과 관련이 없지만 표시된 개념은 모든 언어에 적용됩니다.)
AKS(Azure Kubernetes Service) Azure에서 완전히 관리되는 Kubernetes 옵션입니다. Kubernetes API에 대한 직접 액세스를 지원하고 Kubernetes 워크로드를 실행합니다. 전체 클러스터는 사용자의 제어 및 책임 내에서 클러스터 구성 및 작업을 통해 구독에 상주합니다. Azure에서 완전히 관리되는 Kubernetes 버전을 찾는 팀에 적합합니다.

예: Azure CLI를 사용하여 Azure Kubernetes Service 클러스터를 배포합니다.
Azure Functions 이벤트 기반의 서버리스 FAAS(Functions-as-a-Service) 솔루션입니다. 규모 및 이벤트와의 통합을 중심으로 Azure Container Apps와 많은 특성을 공유하지만 코드 또는 컨테이너로 배포된 임시 함수에 최적화되어 있습니다. 이벤트에 대한 함수 실행을 트리거하려는 팀에 적합합니다. 예를 들어 다른 데이터 원본에 바인딩합니다.

예: 사용자 지정 컨테이너를 사용하여 Linux에서 함수를 만듭니다.

이러한 서비스에 대한 자세한 비교는 다른 Azure 컨테이너 옵션과 Container Apps 비교를 참조 하세요.

가상 환경 및 컨테이너

개발 환경에서 Python 프로젝트를 실행하는 경우 가상 환경을 사용하는 것이 종속성을 관리하고 프로젝트 설정의 재현성을 보장하는 일반적인 방법입니다. 가상 환경에는 해당 환경에서 실행되는 프로젝트 코드에 필요한 Python 인터프리터, 라이브러리 및 스크립트가 설치되어 있습니다. Python 프로젝트에 대한 종속성은 requirements.txt 파일을 통해 관리됩니다.

컨테이너를 사용하는 경우 테스트 또는 기타 이유로 가상 환경을 사용하지 않는 한 가상 환경이 필요하지 않습니다. 가상 환경을 사용하는 경우 Docker 이미지에 복사하지 마세요. .dockerignore 파일을 사용하여 제외합니다.

Docker 컨테이너는 가상 환경과 유사한 기능을 제공하지만 재현성 및 이식성의 추가적인 이점을 제공하는 것으로 생각할 수 있습니다. Docker 컨테이너는 OS에 관계없이 컨테이너를 실행할 수 있는 모든 위치에서 실행할 수 있습니다.

Docker 컨테이너에는 Python 프로젝트 코드와 코드가 실행되어야 하는 모든 것이 포함됩니다. 이 시점에 도달하려면 Python 프로젝트 코드를 Docker 이미지로 빌드한 다음 해당 이미지의 실행 가능한 인스턴스인 컨테이너를 만들어야 합니다.

Python 프로젝트를 컨테이너화하는 경우 키 파일은 다음과 같습니다.

프로젝트 파일 설명
requirements.txt Docker 이미지를 빌드하는 동안 이미지에 올바른 종속성을 가져오는 데 사용됩니다.
Dockerfile Python Docker 이미지를 빌드하는 방법을 지정하는 데 사용됩니다. 자세한 내용은 Python에 대한 Dockerfile 지침 섹션 을 참조하세요.
.dockerignore .dockerignore파일 및 디렉터리에서는 Dockerfile의 명령을 사용하여 Docker 이미지 COPY복사되지 않습니다. .dockerignore 파일은 .gitignore 파일과 유사한 제외 패턴을 지원합니다. 자세한 내용은 .dockerignore 파일을 참조하세요.

파일을 제외하면 이미지 빌드 성능이 향상되지만 검사할 수 있는 이미지에 중요한 정보가 추가되지 않도록 해야 합니다. 예를 들어 .dockerignore에는 .env 및 .venv(가상 환경)를 무시하는 줄이 포함되어야 합니다.

웹 프레임워크에 대한 컨테이너 설정

웹 프레임워크에는 웹 요청을 수신 대기하는 기본 포트가 있습니다. 일부 Azure 컨테이너 솔루션으로 작업할 때는 트래픽을 수신할 컨테이너가 수신 대기하는 포트를 지정해야 합니다.

웹 프레임워크 포트
Django 8000
Flask 5000 또는 5002
FastAPI (uvicorn) 8000 또는 80

다음 표에서는 Azure 컨테이너 솔루션 차이에 대한 포트를 설정하는 방법을 보여 줍니다.

Azure 컨테이너 솔루션 웹앱 포트를 설정하는 방법
Web App for Containers 기본값으로 App Service는 사용자 지정 컨테이너가 포트 80 또는 포트 8080에서 수신 대기한다고 가정합니다. 컨테이너가 다른 포트를 수신 대기하는 경우 App Service 앱에서 WEBSITES_PORT 앱 설정을 설정합니다. 자세한 내용은 Azure 앱 Service에 대한 사용자 지정 컨테이너 구성을 참조하세요.
Azure Containers 앱 Azure Container Apps를 사용하면 수신을 사용하도록 설정하여 공용 웹, VNET 또는 환경 내의 다른 Container Apps에 Container Apps를 노출할 수 있습니다. 들어오는 요청에 대해 컨테이너가 수신 대기하는 포트에 대한 수신 targetPort 을 설정합니다. 애플리케이션 수신 엔드포인트는 항상 포트 443에 노출됩니다. 자세한 내용은 Azure Container Apps에서 HTTPS 또는 TCP 수신 설정을 참조하세요.
Azure Container Instances, Azure Kubernetes 컨테이너를 만드는 동안 포트를 설정합니다. 솔루션에 웹 프레임워크, 애플리케이션 서버(예: gunicorn, uvicorn) 및 웹 서버(예: nginx)가 있는지 확인해야 합니다. 예를 들어 두 개의 컨테이너, 웹 프레임워크 및 애플리케이션 서버가 있는 컨테이너, 웹 서버가 있는 다른 프레임워크를 만들 수 있습니다. 두 컨테이너는 하나의 포트에서 통신하고 웹 서버 컨테이너는 외부 요청에 대해 80/443을 노출합니다.

Python Dockerfile

Dockerfile은 Docker 이미지를 빌드하기 위한 지침이 포함된 텍스트 파일입니다. 첫 번째 줄에는 시작할 기본 이미지가 표시됩니다. 이 줄에는 필요한 프로그램 설치, 파일 복사 및 작업 환경을 만들기 위한 기타 지침이 잇따릅니다. 예를 들어 주요 Python Dockerfile 지침에 대한 일부 Python 관련 예제는 아래 표에 나와 있습니다.

지침 목적 예시
FROM 후속 지침에 대한 기본 이미지를 설정합니다. FROM python:3.8-slim
노출 컨테이너가 런타임에 지정된 네트워크 포트에서 수신 대기한다는 것을 Docker에 알릴 수 있습니다. EXPOSE 5000
COPY 지정된 원본에서 파일 또는 디렉터리를 복사하고 지정된 대상 경로에 있는 컨테이너의 파일 시스템에 추가합니다. COPY . /app
실행 Docker 이미지 내에서 명령을 실행합니다. 예를 들어 종속성을 끌어오기 이 명령은 빌드 시 한 번 실행됩니다. RUN python -m pip install -r requirements.txt
CMD 이 명령은 컨테이너를 실행하기 위한 기본값을 제공합니다. CMD 명령은 하나만 있을 수 있습니다. CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

Docker 빌드 명령은 Dockerfile 및 컨텍스트에서 Docker 이미지를 빌드합니다. 빌드의 컨텍스트는 지정된 경로 또는 URL에 있는 파일 집합입니다. 일반적으로 Python 프로젝트의 루트에서 이미지를 빌드하고 다음 예제와 같이 빌드 명령의 경로는 "."입니다.

docker build --rm --pull  --file "Dockerfile"  --tag "mywebapp:latest"  .

빌드 프로세스는 컨텍스트의 모든 파일을 참조할 수 있습니다. 예를 들어 빌드는 COPY 명령을 사용하여 컨텍스트에서 파일을 참조할 수 있습니다. Flask 프레임워크를 사용하는 Python 프로젝트에 대한 Dockerfile의 예는 다음과 같습니다.

FROM python:3.8-slim

EXPOSE 5000

# Keeps Python from generating .pyc files in the container.
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements.
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder.
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

# Provides defaults for an executing container; can be overridden with Docker CLI.
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

직접 Dockerfile을 만들거나 VS Code 및 Docker 확장을 사용하여 자동으로 만들 수 있습니다. 자세한 내용은 Docker 파일 생성을 참조 하세요.

Docker 빌드 명령은 Docker CLI의 일부입니다. VS Code 또는 PyCharm과 같은 IDE를 사용하는 경우 Docker 이미지 작업을 위한 UI 명령은 빌드 명령을 호출하고 옵션 지정을 자동화합니다.

Python Docker 이미지 및 컨테이너 작업

VS Code 및 PyCharm

Python 컨테이너 개발을 위한 IDE(통합 개발 환경)에서 작업할 필요는 없지만 많은 컨테이너 관련 작업을 간소화할 수 있습니다. 다음은 VS Code 및 PyCharm으로 수행할 수 있는 몇 가지 작업입니다.

  • Docker 이미지를 다운로드하고 빌드합니다.

    • 개발 환경에서 이미지를 빌드합니다.
    • 개발 환경에 Docker를 설치하지 않고 Azure에서 Docker 이미지를 빌드합니다. (PyCharm의 경우 Azure CLI를 사용하여 Azure에서 이미지를 빌드합니다.)
  • 기존 이미지, 끌어온 이미지 또는 Dockerfile에서 직접 Docker 컨테이너를 만들고 실행합니다.

  • Docker Compose를 사용하여 다중 컨테이너 애플리케이션을 실행합니다.

  • Docker Hub, GitLab, JetBrains Space, Docker V2 및 기타 자체 호스팅 Docker 레지스트리와 같은 컨테이너 레지스트리를 커넥트 작업합니다.

  • (VS Code만 해당) Python 프로젝트에 맞게 조정된 Dockerfile 및 Docker 작성 파일을 추가합니다.

개발 환경에서 Docker 컨테이너를 실행하도록 VS Code 및 PyCharm을 설정하려면 다음 단계를 사용합니다.

아직 설치하지 않은 경우 VS Code용 Azure Tools를 설치합니다.

지침 스크린샷
1단계: Shift + Alt + A를 사용하여 Azure 확장을 열고 Azure에 연결되어 있는지 확인합니다.

VS Code 확장 모음에서 Azure 아이콘을 선택할 수도 있습니다.

로그인하지 않은 경우 Azure에 로그인을 선택하고 프롬프트를 따릅니다.

Azure 구독에 액세스하는 데 문제가 있는 경우 프록시 뒤에 있기 때문일 수 있습니다. 연결 문제를 해결하려면 Visual Studio Code의 네트워크 커넥트이온을 참조하세요.
Screenshot showing how Azure Tools looks once signed in.Screenshot showing how Azure Tools looks if you aren't signed in.
2단계: Ctrl + Shift + X를 사용하여 확장을 열고, Docker 확장을 검색하고, 확장을 설치합니다.

VS Code 확장 모음에서 확장 아이콘을 선택할 수도 있습니다.
Screenshot showing how to add Docker extension to VS Code.
3단계: 확장 모음에서 Docker 아이콘을 선택하고, 이미지를 확장하고, 이미지를 마우스 오른쪽 단추로 클릭하여 컨테이너로 실행합니다. Screenshot showing how to use the Docker extension in VS Code to run a container from a Docker image.
4단계: 터미널 창에서 Docker 실행 출력을 모니터링합니다. Screenshot showing an example of running a container in VS Code.

Azure CLI 및 Docker CLI

Azure CLI 및 Docker CLI를 사용하여 Python Docker 이미지 및 컨테이너로 작업할 수도 있습니다. VS Code와 PyCharm 모두 이러한 CLI를 실행할 수 있는 터미널이 있습니다.

빌드 및 실행 인수와 자동화를 더 세부적으로 제어하려는 경우 CLI를 사용합니다. 예를 들어 다음 명령은 Azure CLI az acr build 를 사용하여 Docker 이미지 이름을 지정하는 방법을 보여줍니다.

az acr build --registry <registry-name> \
  --resource-group <resource-group> \
  --target pythoncontainerwebapp:latest .

또 다른 예로 Docker CLI 실행 명령을 사용하는 방법을 보여 주는 다음 명령을 고려해 보세요. 이 예제에서는 컨테이너 외부의 개발 환경에서 MongoDB 인스턴스와 통신하는 Docker 컨테이너를 실행하는 방법을 보여 줍니다. 명령을 완료하기 위한 다양한 값은 명령줄에 지정된 경우 더 쉽게 자동화할 수 있습니다.

docker run --rm -it \
  --publish <port>:<port> --publish 27017:27017 \
  --add-host mongoservice:<your-server-IP-address> \
  --env CONNECTION_STRING=mongodb://mongoservice:27017 \
  --env DB_NAME=<database-name> \
  --env COLLECTION_NAME=<collection-name> \
  containermongo:latest  

이 시나리오에 대한 자세한 내용은 컨테이너화된 Python 웹앱 빌드 및 테스트를 로컬로 참조 하세요.

컨테이너의 환경 변수

Python 프로젝트는 종종 환경 변수를 사용하여 데이터를 코드에 전달합니다. 예를 들어 테스트 중에 쉽게 변경할 수 있도록 환경 변수에 데이터베이스 연결 정보를 지정할 수 있습니다. 또는 프로젝트를 프로덕션에 배포할 때 프로덕션 데이터베이스 인스턴스를 참조하도록 데이터베이스 연결을 변경할 수 있습니다.

python-dotenv와 같은 패키지는 .env 파일에서 키-값 쌍을 읽고 환경 변수로 설정하는 데 자주 사용됩니다. .env 파일은 가상 환경에서 실행할 때 유용하지만 컨테이너로 작업할 때는 권장되지 않습니다. 특히 중요한 정보가 포함되어 있고 컨테이너가 공개되는 경우 .env 파일을 Docker 이미지에 복사하지 마세요. .dockerignore 파일을 사용하여 Docker 이미지에 복사되는 파일을 제외합니다. 자세한 내용은 이 문서의 가상 환경 및 컨테이너 섹션 참조하세요.

다음과 같은 몇 가지 방법으로 환경 변수를 컨테이너에 전달할 수 있습니다.

  1. Dockerfile에서 ENV 지침으로 정의됩니다.
  2. Docker 빌드 명령을 사용하여 인수로 --build-arg 전달됩니다.
  3. Docker 빌드 명령 및 BuildKit 백 엔드를 사용하여 인수로 --secret 전달됩니다.
  4. Docker 실행 명령을 사용하여 as --env 또는 --env-file 인수로 전달됩니다.

처음 두 옵션에는 위에서 설명한 것과 동일한 단점이 있습니다. 즉, 잠재적으로 중요한 정보를 Docker 이미지로 하드코딩하는 것입니다. Docker 이미지를 검사하고 예를 들어 명령 docker 이미지 검사를 사용하여 환경 변수를 볼 수 있습니다.

BuildKit의 세 번째 옵션을 사용하면 최종 이미지에 저장되지 않는 안전한 방식으로 Docker 이미지를 빌드하기 위해 Dockerfile 에서 사용할 비밀 정보를 전달할 수 있습니다.

Docker 실행 명령을 사용하여 환경 변수를 전달하는 네 번째 옵션은 Docker 이미지에 변수가 포함되지 않음을 의미합니다. 그러나 변수는 컨테이너 인스턴스(예 : docker 컨테이너 검사 포함)를 검사하는 상태로 계속 표시됩니다. 이 옵션은 컨테이너 인스턴스에 대한 액세스가 제어되거나 테스트 또는 개발 시나리오에서 허용될 수 있습니다.

다음은 Docker CLI 실행 명령을 사용하여 인수를 사용하여 환경 변수를 전달하는 예제입니다 --env .

# PORT=8000 for Django and 5000 for Flask
export PORT=<port-number>

docker run --rm -it \
  --publish $PORT:$PORT \
  --env CONNECTION_STRING=<connection-info> \
  --env DB_NAME=<database-name> \
  <dockerimagename:tag>

VS Code 또는 PyCharm을 사용하는 경우 이미지 및 컨테이너 작업을 위한 UI 옵션은 궁극적으로 위에 표시된 것과 같은 Docker CLI 명령을 사용합니다.

마지막으로, Azure에서 컨테이너를 배포할 때 환경 변수를 지정하는 것은 개발 환경에서 환경 변수를 사용하는 것과 다릅니다. 예시:

  • Web App for Containers의 경우 App Service를 구성하는 동안 애플리케이션 설정을 구성합니다. 이러한 설정은 앱 코드에서 환경 변수로 사용할 수 있으며 표준 os.environ 패턴을 사용하여 액세스합니다. 필요한 경우 초기 배포 후 값을 변경할 수 있습니다. 자세한 내용은 환경 변수로 Access 앱 설정을 참조 하세요.

  • Azure Container Apps의 경우 컨테이너 앱의 초기 구성 중에 환경 변수를 구성합니다. 이후에 환경 변수를 수정하면 컨테이너의 수정 내용이 만들어집니다. 또한 Azure Container Apps를 사용하면 애플리케이션 수준에서 비밀을 정의한 다음 환경 변수에서 참조할 수 있습니다. 자세한 내용은 Azure Container Apps의 비밀 관리를 참조 하세요.

또 다른 옵션으로 서비스 커넥트or를 사용하여 Azure 컴퓨팅 서비스를 다른 지원 서비스에 연결할 수 있습니다. 이 서비스는 관리 평면에서 컴퓨팅 서비스와 대상 지원 서비스 간의 네트워크 설정 및 연결 정보(예: 환경 변수 생성)를 구성합니다.

컨테이너 로그 보기

컨테이너 인스턴스 로그를 보고 코드에서 진단 메시지 출력을 보고 컨테이너 코드의 문제를 해결합니다. 다음은 개발 환경에서 컨테이너를 실행할 때 로그를 볼 수 있는 몇 가지 방법입니다.

  • VS Code 및 PyCharm 섹션 에 표시된 것처럼 VS Code 또는 PyCharm을 사용하여 컨테이너를 실행하면 Docker 실행이 실행될 때 열린 터미널 창의 로그를 볼 수 있습니다.

  • 대화형 플래그-it와 함께 Docker CLI 실행 명령을 사용하는 경우 명령 다음에 출력이 표시됩니다.

  • Docker Desktop에서 실행 중인 컨테이너에 대한 로그를 볼 수도 있습니다.

Azure에서 컨테이너를 배포할 때 컨테이너 로그에 대한 액세스 권한도 있습니다. 다음은 여러 Azure 서비스 및 Azure Portal에서 컨테이너 로그에 액세스하는 방법입니다.

Azure 서비스 Azure Portal에서 로그에 액세스하는 방법
Web App for Containers 진단으로 이동하여 문제 리소스를 해결하여 로그를 봅니다. 진단은 구성 없이 앱 문제를 해결하는 데 도움이 되는 지능적이고 대화형 환경입니다. 로그를 실시간으로 보려면 모니터링 - 로그 스트림으로 이동합니다. 자세한 로그 쿼리 및 구성은 모니터링 아래 의 다른 리소스를 참조하세요.
Azure Container Apps 환경 리소스 진단으로 이동하여 문제를 해결하여 환경 문제를 해결합니다. 컨테이너 로그를 자주 볼 수 있습니다. 컨테이너 리소스의 애플리케이션 - 수정 관리에서 수정 버전을 선택하고 여기에서 시스템 및 콘솔 로그를 볼 수 있습니다. 자세한 로그 쿼리 및 구성은 모니터링 아래 의 리소스를 참조하세요.
Azure Container Instances 컨테이너 리소스로 이동하여 로그를 선택합니다.

위에 나열된 동일한 서비스의 경우 로그에 액세스하는 Azure CLI 명령은 다음과 같습니다.

Azure 서비스 로그에 액세스하는 Azure CLI 명령
Web App for Containers az webapp log
Azure Container Apps az containerapps logs
Azure Container Instances az container logs

VS Code에서 로그를 볼 수도 있습니다. VS Code용 Azure 도구가 설치되어 있어야 합니다. 다음은 VS Code에서 Web Apps for Containers(App Service) 로그를 보는 예제입니다.

Screenshot showing how to view logs in VS Code for Web Apps for Containers.

다음 단계