Dockerfile 최적화
컨테이너 기술은 어디까지나 빠르게 어디에서나 배포를 하기 위함이다
----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
FROM node
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 80
CMD [ "node", "server.js" ]
----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
이라는 dockerfile을 가질때 '소스코드'를 조금만 변경하여도 RUN npm install 아래 라인이 실행이 된다
이는 layer 기반이기 때문
따라서
------------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- --------------
FROM node
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 80
CMD [ "node", "server.js" ]
----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
이렇게 수정하여 소스코드를 변경하여도 RUN npm install 아래 레이어를 Docker의 캐시를 이용하여 실행 속도를 최적화 할 수 있다
* package.json : 현재 프로젝트에 관한 정보와 패키지 매니저(npm, yarn)을 통해 설치한 모듈들의 의존성을 관리하는 파일