컨테이너 내 Node.js
이 가이드에서는 다음을 배우게 됩니다:
- Express Node.js 서비스 컨테이너를 위한
Dockerfile파일 만들기 - 서비스를 빌드, 실행하고 기능을 검증하기
- 컨테이너 내에서 실행 중인 서비스 디버그하기
전제 조건
Express Node.js 애플리케이션 만들기
-
프로젝트 폴더 만들기.
-
프로젝트 폴더에서 개발 명령 프롬프트를 열고 프로젝트 만들기
npx express-generator npm install
프로젝트에 Docker 파일 추가하기
-
VS Code에서 프로젝트 폴더를 엽니다.
-
명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))를 열고 Containers: Add Docker Files to Workspace... 명령 사용

-
애플리케이션 플랫폼을 묻는 메시지가 표시되면 Node.js를 선택합니다.
-
기본 package.json 파일을 선택합니다.
-
애플리케이션 포트를 묻는 메시지가 표시되면
3000을 입력합니다. -
Docker Compose 파일을 포함할지 묻는 메시지가 표시되면 Yes 또는 No를 선택합니다. Compose는 일반적으로 여러 컨테이너를 동시에 실행할 때 사용됩니다.
확장 프로그램은 Dockerfile 및 .dockerignore 파일을 생성합니다. Docker Compose 파일을 포함하기로 선택한 경우 docker-compose.yml 및 docker-compose.debug.yml도 생성됩니다. 마지막으로 확장 프로그램은 컨테이너를 빌드하고 실행하기 위한 VS Code 태스크 세트를 .vscode/tasks.json에 (디버그 및 릴리스 구성 모두) 생성하고 컨테이너 내에서 서비스를 디버그하기 위한 launch 디버그 구성을 .vscode/launch.json에 생성합니다.
이미지에 환경 변수 추가하기
Container Tools 확장은 자동 완성 및 상황별 도움말을 제공하기 위해 IntelliSense를 사용하여 Dockerfile 작성을 지원합니다. 이 기능을 실제로 보려면 다음 단계를 따라 서비스 이미지에 환경 변수를 추가하십시오.
-
Dockerfile파일을 엽니다. -
ENV명령을 사용하여 서비스 컨테이너 이미지에 환경 변수를 추가합니다.
Container Tools 확장이 사용 가능한 모든 Dockerfile 명령을 나열하고 구문을 설명하는 방식을 확인합니다.
Container Tools 확장은
Dockerfile의base스테이지를 사용하여 서비스의 컨테이너 이미지 디버그 버전을 생성합니다. 이 변수를 컨테이너 이미지의 디버그 및 릴리스 버전 모두에서 사용할 수 있도록base스테이지에 변수 정의를 넣습니다. -
Dockerfile파일을 저장합니다.
서비스를 로컬에서 실행하기
-
터미널을 엽니다 (⌃` (Windows, Linux Ctrl+`)).
-
애플리케이션을 시작하려면
npm run start를 입력합니다.> express-app@0.0.0 start /Users/user/code/scratch/express-app > node ./bin/www -
웹 브라우저를 열고 https://:3000으로 이동합니다. 다음과 유사한 페이지가 표시되어야 합니다.

-
테스트가 끝나면 터미널에 Ctrl+C를 입력합니다.
서비스 이미지 빌드하기
-
명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))를 열고 Container Images: Build Image... 명령을 선택합니다.
-
Container Explorer를 열고 새 이미지가 Images 보기에서 보이는지 확인합니다.

서비스 컨테이너 실행하기
-
이전 섹션에서 빌드한 이미지를 마우스 오른쪽 버튼으로 클릭하고 Run 또는 Run Interactive를 선택합니다. 컨테이너가 시작되고 Containers 보기에서 확인할 수 있어야 합니다.

-
웹 브라우저를 열고 https://:3000으로 이동합니다. 다음과 유사한 페이지가 표시되어야 합니다.

-
테스트가 끝나면 Containers 보기에서 컨테이너를 마우스 오른쪽 버튼으로 클릭하고 Stop을 선택합니다.
서비스 컨테이너에서 디버그하기
Container Tools 확장이 애플리케이션에 파일을 추가할 때 컨테이너 내에서 서비스를 디버그하기 위한 VS Code 디버거 구성을 .vscode/launch.json에 추가합니다. 확장 프로그램은 서비스에서 사용하는 프로토콜과 포트를 감지하고 브라우저를 서비스로 연결합니다.
-
routes/index.js의'/'경로에 대한get()핸들러에 중단점을 설정합니다. -
Containers: Node.js Launch 디버거 구성이 선택되었는지 확인합니다.

-
디버깅을 시작합니다 (F5 키 사용).
- 서비스 이미지가 빌드됩니다.
- 서비스 컨테이너가 실행됩니다.
- 브라우저가 서비스 컨테이너에 매핑된 (무작위) 포트로 열립니다.
- 디버거가
index.js의 중단점에서 멈춥니다.
디버거가 애플리케이션 시작 *후*에 연결되기 때문에 처음에는 중단점을 놓칠 수 있습니다. 디버거가 두 번째 시도에서 중단되도록 브라우저를 새로고침해야 할 수 있습니다.
tasks.json의docker-run: debug태스크에서node객체 아래의 inspectMode 속성을break로 설정하여 애플리케이션이 디버거가 연결될 때까지 기다리도록 구성할 수 있습니다.
애플리케이션 로그 보기
컨테이너에서 View Logs 명령을 사용하여 VS Code에서 로그를 볼 수 있습니다.
-
Container Explorer로 이동합니다.
-
Containers 보기에서 컨테이너를 마우스 오른쪽 버튼으로 클릭하고 View Logs를 선택합니다.

-
출력이 터미널에 표시됩니다.
다음 단계
완료되었습니다! 이제 컨테이너를 준비했으므로 다음을 수행할 수 있습니다: