devcontainer
Devcontainer.json
.devcontainer/devcontainer.json
로 저장하고 컨테이너에서 개발 하는 경우 유용
Template
{
"name": "Project Name",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspace",
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
"extensions": [
"dbaeumer.vscode-eslint",
"ms-python.python"
],
"forwardPorts": [3000, 5000],
"postCreateCommand": "npm install",
"remoteUser": "node",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
},
"runServices": ["app", "db"],
"shutdownAction": "stopCompose",
"overrideCommand": false,
"remoteEnv": {
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
},
"initializeCommand": "echo 'Initializing...'",
"onCreateCommand": "echo 'Container created'",
"updateContentCommand": "echo 'Updating content'",
"postStartCommand": "echo 'Container started'",
"postAttachCommand": "echo 'Attached to container'",
"customizations": {
"vscode": {
"extensions": [
"ms-azuretools.vscode-docker"
],
"settings": {
"editor.formatOnSave": true
}
}
},
"containerEnv": {
"NODE_ENV": "development"
},
"remoteUser": "node",
"userEnvProbe": "loginInteractiveShell",
"updateRemoteUserUID": true
}
기본 설정
name
: 프로젝트 이름 dockerComposeFile
: 사용할 Docker Compose 파일 경로 service
: 연결할 서비스 이름 workspaceFolder
: 컨테이너 내 작업 디렉토리
VS Code 설정
settings
: VS Code 설정 extensions
: 설치할 VS Code 확장
네트워크 및 포트
명령어 실행
postCreateCommand
: 컨테이너 생성 후 실행할 명령어 initializeCommand
: 개발 컨테이너 생성 전 실행할 명령어 onCreateCommand
: 컨테이너 생성 시 실행할 명령어 updateContentCommand
: 컨테이너 업데이트 시 실행할 명령어 postStartCommand
: 컨테이너 시작 후 실행할 명령어 postAttachCommand
: VS Code가 컨테이너에 연결된 후 실행할 명령어
서비스 관리
runServices
: 시작할 서비스 목록 shutdownAction
: VS Code 창을 닫을 때 수행할 작업
사용자 및 환경 설정
remoteUser
: 컨테이너 내에서 사용할 사용자 remoteEnv
: 원격 환경에 설정할 환경 변수 containerEnv
: 컨테이너 내부에 설정할 환경 변수 userEnvProbe
: 사용자 환경 변수를 가져오는 방법 지정 updateRemoteUserUID
: 원격 사용자의 UID를 로컬 사용자와 일치시킬지 여부
기타 설정
overrideCommand
: 서비스의 명령을 재정의할지 여부 features
: 추가할 개발 기능 customizations
: VS Code 및 기타 도구에 대한 추가 사용자 정의 설정