도커 팁

Dockerfile의 레이어 순서에 주의하자

아래와 같은 도커파일이 있다.

FROM node

WORKDIR /app

COPY . /app

RUN npm install

EXPOSE 80

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

위 코드의 단점은 코드가 바뀌면 모든 레이어가 재실행 된다는 점이다.
package.json은 수정되지 않았는데도 npm install을 재실행한다.

재실행되는 이유는 상위 레이어가 바뀌었기 떄문이다.
우리는 캐시를 활용하고 싶다. 그러면 어떻게 하면될까?

일단 코드부터 보자. 아래와 같이 바꿔주면 된다.

FROM node

WORKDIR /app

# 1. package.json을 먼저 추가한다.
COPY package.json /app
# 2. package.json을 수정하지 않았다면 상위 레이어에서는 바뀐게 없으므로 캐시를 통한 재실행
RUN npm install

COPY . /app

EXPOSE 80

CMD ["node", "server.js"]
Last Updated: