도커 팁
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"]