이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

컨테이너화된 앱 디버깅

Container Tools 확장은 컨테이너 내에서 실행되는 애플리케이션에 디버거를 연결하기 위한 launch.json 구성을 스캐폴딩하는 등 컨테이너 내 애플리케이션 디버깅에 대한 추가 지원을 제공합니다.

Container Tools 확장은 VS Code가 애플리케이션을 시작하거나 실행 중인 컨테이너의 애플리케이션에 디버거를 연결하는 방법을 관리하는 docker 디버그 구성 공급자를 제공합니다. 이 공급자는 launch.json 내의 항목을 통해 구성되며, 구성은 공급자가 지원하는 각 애플리케이션 플랫폼에 특화됩니다.

Container Tools 확장은 현재 컨테이너 내에서 Node.js, Python 및 .NET 애플리케이션 디버깅을 지원합니다.

요구 사항

launch.jsonlaunch 구성을 스캐폴딩하거나 붙여넣는 것만으로는 컨테이너를 빌드하고 디버깅하기에 **충분하지 않습니다**. 컨테이너 launch 구성을 성공적으로 실행하려면 다음이 필요합니다.

  • Dockerfile.
  • tasks.jsondocker-builddocker-run 작업.
  • 이러한 작업을 호출하는 launch 구성.

이러한 자산이 아직 존재하지 않는 경우 **Containers: Add Docker Files to Workspace...** 명령을 사용하여 이러한 항목을 만드는 것이 좋습니다. 이미 작동하는 Dockerfile이 있는 경우 **Containers: Initialize for container debugging** 명령을 사용하여 launch 구성 및 컨테이너 관련 작업을 스캐폴딩하는 것이 좋습니다.

Node.js

컨테이너 내 Node.js 애플리케이션 디버깅에 대한 자세한 내용은 컨테이너 내 Node.js 디버깅에서 확인할 수 있습니다.

Node.js 애플리케이션 디버깅을 위한 예제 launch.json 구성

{
  "configurations": [
    {
      "name": "Containers: Node.js Launch",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "docker-run: debug",
      "platform": "node"
    }
  ]
}

Python

컨테이너 내 Python 애플리케이션 디버깅에 대한 자세한 내용은 컨테이너 내 Python 디버깅에서 확인할 수 있습니다.

Python 애플리케이션 디버깅을 위한 예제 launch.json 구성

{
  "configurations": [
    {
      "name": "Containers: Python - Django",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "docker-run: debug",
      "python": {
        "pathMappings": [
          {
            "localRoot": "${workspaceFolder}",
            "remoteRoot": "/app"
          }
        ],
        "projectType": "django"
      }
    }
  ]
}

.NET

컨테이너 내에서 프로젝트를 빌드하고 디버깅하는 두 가지 방법 중에서 선택할 수 있습니다.

  • .NET SDK 사용: MSBuild에 익숙하거나 Dockerfile 없이 프로젝트를 컨테이너화하려는 경우 이 옵션을 권장합니다.

    참고: 이 옵션은 .NET SDK 7 이상에서만 사용할 수 있으며 이미지를 빌드하기 위해 dotnet publish 명령을 사용합니다.

  • Dockerfile 사용: Dockerfile을 사용하여 프로젝트를 사용자 정의하려는 경우 이 옵션을 선택합니다.

이 두 가지 옵션에 대한 자세한 내용은 컨테이너 내 .NET 디버깅을 참조하십시오.

Dockerfile을 사용하여 .NET 애플리케이션을 디버깅하기 위한 예제 launch.json 구성

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Containers: .NET Launch",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "Run Container",
      "netCore": {
        "appProject": "${workspaceFolder}/project.csproj"
      }
    }
  ]
}

구성 참조

속성 설명
containerName 디버깅에 사용되는 컨테이너의 이름입니다.
dockerServerReadyAction 컨테이너로 브라우저를 시작하기 위한 옵션입니다. serverReadyAction과 유사하지만 컨테이너 포트를 호스트 포트로 대체합니다.
removeContainerAfterDebug 디버깅 후 디버그 컨테이너를 제거할지 여부입니다.
platform 애플리케이션의 대상 플랫폼입니다. netCore 또는 node가 될 수 있습니다.
netCore 컨테이너에서 .NET 프로젝트를 디버깅하기 위한 옵션입니다.
node 컨테이너에서 Node.js 프로젝트를 디버깅하기 위한 옵션입니다.
python 컨테이너에서 Python 프로젝트를 디버깅하기 위한 옵션입니다.

dockerServerReadyAction 객체 속성

속성 설명
action 패턴이 발견될 때 수행할 작업입니다. debugWithChrome 또는 openExternally가 될 수 있습니다.
containerName 호스트 포트와 일치시킬 컨테이너 이름입니다.
pattern 디버그 콘솔 출력에서 찾을 정규식 패턴입니다.
uriFormat 시작할 URI 형식입니다.
webRoot 웹 페이지가 제공되는 루트 폴더입니다. actiondebugWithChrome으로 설정된 경우에만 사용됩니다.

node 객체 속성

이 속성은 Node.js 애플리케이션에 디버거를 연결하기 위한 VS Code 설명서의 속성과 동일합니다. node 객체에서 전달된 모든 속성은 명시적으로 나열되지 않더라도 Node.js 디버그 어댑터로 전달됩니다.

속성 설명 기본값
port 선택 사항입니다. 사용할 디버그 포트입니다. 9229
address 선택 사항입니다. 디버그 포트의 TCP/IP 주소입니다.
sourceMaps 선택 사항입니다. true로 설정하여 소스 맵을 활성화합니다.
outFiles 선택 사항입니다. 생성된 JavaScript 파일을 찾는 glob 패턴 배열입니다.
autoAttachChildProcesses 선택 사항입니다. 디버깅 대상의 모든 하위 프로세스를 추적하고 디버그 모드로 시작되는 프로세스에 자동으로 연결합니다.
timeout 선택 사항입니다. 세션을 다시 시작할 때 이 시간(밀리초)이 지나면 포기합니다.
stopOnEntry 선택 사항입니다. 프로그램이 시작될 때 즉시 중단합니다.
localRoot 선택 사항입니다. VS Code의 루트 디렉터리입니다. 루트 워크스페이스 폴더입니다.
remoteRoot 선택 사항입니다. 컨테이너 내 Node.js의 루트 디렉터리입니다. /usr/src/app
smartStep 선택 사항입니다. 소스 파일에 매핑되지 않는 코드를 자동으로 건너뛰려고 시도합니다.
skipFiles 선택 사항입니다. 이러한 glob 패턴으로 표시된 파일을 자동으로 건너뜁니다.
trace 선택 사항입니다. 진단 출력을 활성화합니다.

python 객체 속성

속성 설명 기본값
host 원격 디버깅을 위한 호스트입니다.
port 원격 디버깅을 위한 포트입니다. 5678
pathMappings 로컬 머신과 원격 호스트 간의 프로젝트 경로를 매핑합니다.
projectType Python 프로젝트 유형입니다. Flask 프로젝트의 경우 flask, Django의 경우 django, FastAPI의 경우 fastapi, 기타의 경우 일반입니다. 프로젝트 유형은 디버깅에 사용되는 포트 및 명령을 설정하는 데 사용됩니다.
justMyCode 사용자가 작성한 코드만 디버깅합니다.
django Django 디버깅입니다. false
jinja Jinja 템플릿 디버깅 (Flask 등). false

netCore 객체 속성

netCore 객체에서 전달된 속성은 명시적으로 나열되지 않더라도 일반적으로 .NET 디버그 어댑터로 전달됩니다. 디버거 속성의 전체 목록은 OmniSharp VS Code 확장 설명서에 있습니다.

속성 설명
appProject 디버깅할 .NET 프로젝트 (.csproj, .fsproj 등)입니다.

다음 단계

더 자세히 알아보려면 다음을 읽어보십시오.

© . This site is unofficial and not affiliated with Microsoft.