이 스크립트의 목표 역시 앞서와 마찬가지로, 애플리케이션을 패키징하고 다른 도구 없이 도커만 설치된 환경에서 애플리케이션을 실행하는 것이다. 두 이미지 모두 diamol/node를 기반 이미지로 사용한다. 이 이미지는 Node.js 런타임과 npm이 설치된 이미지다. builder 단계에서 애플리케이션의 의존 모듈이 정의된 package.json 파일을 복사한 다음, npm install 명령을 실행해 의존 모듈을 내려받는다. 별도의 컴파일이 필요치 않으므로 빌드 과정은 이것이 전부다.
이 Node.js 애플리케이션 역시 REST API다. 최종 단계에서 공개할 HTTP 포트와 애플리케이션 시작 명령을 지정한다. 최종 단계는 작업 디렉터리를 만들고 호스트 컴퓨터로부터 애플리케이션 아티팩트를 모두 복사해 넣는 것으로 끝난다. src 디렉터리는 애플리케이션의 진입점 역할을 하는 server.js 파일을 비롯해 여러 자바스크립트 파일을 담고 있다.
이번 애플리케이션은 앞서 본 예제와 기술 스택, 패키징 패턴이 모두 다르다. 기반 이미지, 빌드 도구, 실행 명령 또한 자바 애플리케이션과는 모두 차이가 있다. 하지만 이러한 차이점에도 불구하고 Dockerfile 스크립트를 통해 똑같은 방식으로 애플리케이션을 빌드하고 실행할 수 있다.
실습 Node.js 애플리케이션의 소스 코드를 훑어보고 이미지를 빌드하라.
cd ch04/exercises/access-log docker image build -t access-log .