본문 바로가기

프로그래밍

Docker 개념과 기초 연습 4(재빌드)

Docker 컨테이너로 어플을 실행 할 때 이미지를 만들기 위해 빌드 하고 run 해서 도커 이미지의 컨테이너를 만들고 실행한다.

그러면 여기에 궁금증이 생긴다. 만약 코드가 변경된다면 항상 빌드 후에 런을 매번 해주어야 하나?

 

변경 전 코드

FROM node:10

WORKDIR /usr/src/app

#전체 코드 복사
COPY ./ /

# package.json 종속성 다운
RUN npm install

EXPOSE 8080

CMD ["node", "index.js"]

 

변경 후 코드

FROM node:10

# 먼저 워킹 dir 생성
WORKDIR /usr/src/app

#package.json만 먼저 복사
COPY package.json ./

# package.json 종속성 다운
RUN npm install

EXPOSE 8080

#전체 코드 복사
COPY ./ /

CMD ["node", "index.js"]

 

여기서 보면 package.json 을 먼저 install 한 다음에 전체 코드를 복사한다.

그러면 이미 캐시가 있기 때문에 npm install 은 package.json의 종속성을 따로 다운받지 않고 변경된 코드만 빌드된다.