Skip to content

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 확장

네트워크 및 포트

  • forwardPorts: 포워딩할 포트

명령어 실행

  • postCreateCommand: 컨테이너 생성 후 실행할 명령어
  • initializeCommand: 개발 컨테이너 생성 전 실행할 명령어
  • onCreateCommand: 컨테이너 생성 시 실행할 명령어
  • updateContentCommand: 컨테이너 업데이트 시 실행할 명령어
  • postStartCommand: 컨테이너 시작 후 실행할 명령어
  • postAttachCommand: VS Code가 컨테이너에 연결된 후 실행할 명령어

서비스 관리

  • runServices: 시작할 서비스 목록
  • shutdownAction: VS Code 창을 닫을 때 수행할 작업

사용자 및 환경 설정

  • remoteUser: 컨테이너 내에서 사용할 사용자
  • remoteEnv: 원격 환경에 설정할 환경 변수
  • containerEnv: 컨테이너 내부에 설정할 환경 변수
  • userEnvProbe: 사용자 환경 변수를 가져오는 방법 지정
  • updateRemoteUserUID: 원격 사용자의 UID를 로컬 사용자와 일치시킬지 여부

기타 설정

  • overrideCommand: 서비스의 명령을 재정의할지 여부
  • features: 추가할 개발 기능
  • customizations: VS Code 및 기타 도구에 대한 추가 사용자 정의 설정