# 베이스 이미지를 명시
FROM node:10
COPY package*.json ./
# 추가적으로 필요한 파일들을 다운
RUN npm install
# 소스 복사해서 컨테이너로 넣기
COPY . .
EXPOSE 3000
# 컨테이너 시작시 실행 될 명령어를 명시
CMD["node", "index.js"]
npm Install
- npm은 Node.js로 만들어진 모듈을 웹에서 받아서 설치하고 관리해주는 프로그램
- npm install은 package.json에 적혀있는 종속성들을 웹에서 자동으로 다운 받아서 설치해주는 명령어
결론적으로는 현재 노드 js앱을 만들때 필요한 모듈들을 다운받아 설치하는 역할
COPY package*.json ./ 하는 이유
npm install을 실행할때 어플맄네이션에 필요한 종속성을 다운받는데
새로 생성된 package.json이 없으면 에러 발생
Working Directory 명시
도커 파일에 WORKDIR /usr/src/app 추가
명시를 안하고 Copy를 했을시 문제점
1. 베이스 이미지에 이미 home이라는 폴더가 있고
Copy를 하므로서 새로 추가 되는 폴더중에 home이라는 폴더가 있으면 덮어씌어져 버림
2. 한 디렉토리 안에 파일이 다 들어가서 정돈이 안된다.
Docker Volume
간단한 Html 소스를 변경했는데 다시 이미지를 만들고 컨테이너 생성 및 실행
-> 프로젝트가 커지면 너무 큰 번거로움이 있음
-> docker volume을 사용하게 되면 해결
docker run -p 80:3000 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app <이미지>
-v /usr/src/app/node_modules: 호스트 디렉토리에 node_modules는 없기에 컨테이너에서 매핑을 하지 말라고 하는 것
$(pwd):/usr/src/app pwd 경로에 있는 디렉토리 혹은 파일을 /usr/src/app 경로에서 참조
'Infla > Docker' 카테고리의 다른 글
1. [Seminar] Dockerfile 실습 - NodeJS 파일 생성 (0) | 2021.01.04 |
---|---|
1. [Seminar] Dockerfile 설명 (0) | 2020.12.29 |
1. [Seminar] 도커 이미지 생성하는 순서 (0) | 2020.12.29 |
1. [Seminar] 실행중인 컨테이너에서 터미널 실행 ( exec ) (0) | 2020.12.29 |
1. [Seminar] 레디스 서버를 이용한 컨테이너 이해 (0) | 2020.12.29 |