궁극의 개발 환경 설정
컨테이너를 이용하여 프로젝트 단위에서 문제 없이 설정할 수 있는 궁극의 개발 환경 설정 가이드
필요 소프트웨어 ¶
- Docker Desktop
- Windows 10 Pro 이상 : Hyper-V 기반 동작
- 그 이외의 Windows : VirtualBox 기반 동작
- Mac OS X : LxC 기반 동작
- Linux : 테스트 필요
- VSCode
- Remote Development Extension 설치
- Remote Development Extension 설치
Windows 10 Home 사용자라면, 다음을 참고하면 Hyper-V 를 설치할 수 있는 것으로 보임. (확인 필요)
Getting Started ¶
필요 소프트웨어가 다 설치되었다면, VS Code 를 키고 다음 단계를 따르면 된다.
-
VS Code 시작
-
하단 버튼 클릭 후 Remote-Containers: Clone Repository in Container Volume… 클릭
호스트 내에 존재하는 디렉토리 혹은 VSCode Workspace 로 작업할 경우 Remote-Containers: Open Folder / Workspace in Container… 를 선택해주자.
-
작업할 프로젝트의 Repository Git URL 을 기재
-
생성할 Volume 설정.
- Create a unique volume: 해당 프로젝트만을 위한 독립적인 공간.
- Create a new volume: 다른 프로젝트에서도 사용할 수 있는 공유 공간.
우리는 이 프로젝트를 위한 독립적인 공간을 만들기 위해 ‘Create a unique volume’ 을 클릭해주자.
다른 프로젝트도 접근해야할 공간을 만들어야 한다면 ‘Create a new volume’ 을 클릭해주면 된다.
사진 상에서 vsc-remote-sample 이라는 Volume 은 이전에 만들어진 공유 공간이다.
- 제대로 설정이 되었다면 프로젝트가 열린다.
Minor Tips ¶
이미지, 폰트 등의 파일 삽입 ¶
Windows File Explorer 에서 파일을 컨테이너 안으로 주입할 수도 있다. ( VS Code 의 막강한 기능 덕분에…)
가령 다음과 같이 perl.jpg
을 프로젝트 내의 img 로 넣고 싶다고 하자.
그냥 이미지를 마우스로 끌어서 드래그앤드랍으로 넣으면 된다.
Deeper Inspection ¶
잘 살펴보면, 프로젝트 내에 .devcontainer 라는 디렉토리가 존재함을 볼 수 있다. (셋업이 안되어 있을 경우 Windows 에서는 Ctrl + Shift + P, Mac OS 에서는 Command + Shift + P 를 눌러서 Command Pallete 을 띄운 후 Remote-Containers: Add Development Container Configuration Files… 을 눌러서 추가해주자.)
대략 내용을 살펴보면, 해당 개발 환경을 정의하는 Dockerfile 과, VS Code 에서 사용하기 위한 JSON 파일로 이루어져있음을 알 수 있다.
JSON (devcontainer.json) 의 각 필드의 내용은 다음과 같다.
devcontainer.json specification
Name Description name 컨테이너 이름 build 컨테이너 빌드 ( docker build ) 시 사용될 설정 build.dockerfile Dockerfile 명 build.args docker build —build-arg 로 포함되는 arguments. Dockerfile 내의 ARG. runArgs 빌드 된 컨테이너가 docker run 으로 실행될 때 사용되는 설정 settings .vscode/settings.json 로 사용될, VS Code 가 참조하는 에디터 설정값 extensions 해당 프로젝트 내에 같이 설치될 VS Code Extension forwardPorts 해당 프로젝트 내에서 사용될 Port. VS Code 는 이 설정 값을 기준으로 localhost 로 어떤 포트를 포트 포워딩 할지를 참고함. (적어주지 않아도, 동작은 하니 문제 없음) postCreateCommand 컨테이너가 생성된 후 실행되는 커맨드 remoteUser 컨테이너 내의 사용자 명
관련한 더욱 자세한 내용은 https://code.visualstudio.com/docs/remote/containers#_getting-started 을 살펴보면 된다.