컨테이너화된 앱 디버깅
Container Tools 확장은 컨테이너 내에서 실행되는 애플리케이션에 디버거를 연결하기 위한 launch.json 구성을 스캐폴딩하는 등 컨테이너 내 애플리케이션 디버깅에 대한 추가 지원을 제공합니다.
Container Tools 확장은 VS Code가 애플리케이션을 시작하거나 실행 중인 컨테이너의 애플리케이션에 디버거를 연결하는 방법을 관리하는 docker 디버그 구성 공급자를 제공합니다. 이 공급자는 launch.json 내의 항목을 통해 구성되며, 구성은 공급자가 지원하는 각 애플리케이션 플랫폼에 특화됩니다.
Container Tools 확장은 현재 컨테이너 내에서 Node.js, Python 및 .NET 애플리케이션 디버깅을 지원합니다.
요구 사항
launch.json에 launch 구성을 스캐폴딩하거나 붙여넣는 것만으로는 컨테이너를 빌드하고 디버깅하기에 **충분하지 않습니다**. 컨테이너 launch 구성을 성공적으로 실행하려면 다음이 필요합니다.
- Dockerfile.
tasks.json에docker-build및docker-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 |
웹 페이지가 제공되는 루트 폴더입니다. action이 debugWithChrome으로 설정된 경우에만 사용됩니다. |
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 등)입니다. |
다음 단계
더 자세히 알아보려면 다음을 읽어보십시오.