도커를 이용한 Node.js 어플(Docker with Node.js App)

Docker with Node.js App

예제 Node.js

Node.js 생성.

npm init : package.json 생성.

Dokcerfile 생성.

위코드로 Docker build 에러 발생.

COPY package.json ./ 을 추가하여 package파일을 복사한다.

docker build -t mingeon/nodejs ./

다시 또 Error 발생. server.js 가 위치하지 않는 Error

Build 성공 But loaclhost:8080 접속 불가.

container에 접근하기 위한 설정.

circle-info

local file을 복사한 것과 같이 network도 연결을 해주어야 한다.

Port mapping이 필요.

docker run -p 5000:8080 mingeon/nodejs 를 통해 실행.

설정한 local port 5000을 통해 접속.

Working Directory

circle-info

Woking Directory

이미지안에서 app 소스 코드를 가지고 있을 디렉토리.

WorkDir를 설정하지 않는 경우

  1. 파일이름이 중복일 경우. (기존 파일이 덮어 씌워진다.)

  2. 난잡하다.

재빌드 후 실행.

  • docker build -t mingeon/nodejs ./

  • docker run -it mingeon/nodejs sh

WorkDir 설정을 하는 경우, container 접속시 WorkDir이 첫화면이다.

어플리케이션 소스 변경으로 재빌드하는 문제

재빌드 효율적으로 하는 법

circle-info

npm insatll을 실행 할때 cache를 사용하기 위한 전략.

종속성을 먼저 복사하여 package.json의 변화가 없는 경우,

도커 내부의 캐시를 통해 종속성 다운로드의 중복 피할 수 있다.

Docker Volume

circle-info

node_modules = 종속성 다운로드 dir

vscode powerShell 환경 : $(pwd) ->${pwd}

re-build 없이 매핑된 파일의 변경으로 적용.

-> docker restart를 통해 재실행 해주어야 한다.

Last updated