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