docker layer
2023. 2. 13. 23:31ㆍStudy/docker
728x90
FROM node
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 80
CMD ["node", "server.js"]
FROM node
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 80
CMD ["node", "server.js"]
<build를 하고나면 docker는 build에 대한 캐시를 가지고 있다. 기존에 build했던 dockerfile을 다시 build할 때 속도를 빠르게 하기 위한 효과적인 방법>
docker는 한줄 한줄 레이어 구조이다.
위 dockerfile로 builld를 할때 만약 server.js에서 뭔가를 수정했다면 server.js에 관련된 레이어는 COPY . /app 이므로 하위인 RUN 레이어도 뒤따라 실행된다.
하지만 아래 dockerfile로 실행하게 되면 server.js를 수정했더라도 수정되지 않은 package.json을 npm보다 상위에서 복사하면 docker는 npm install을 굳이 다시 실행할 필요 없이 cache를 이용하기에 속도가 빨라진다.
위의 dockerfile로 server.js를 수정 후 build 7.2초.
아래의 dockerfile로 server.js를 수정 후 build 0.9초
큰 차이를 보였다
728x90
'Study > docker' 카테고리의 다른 글
docker 명령어 (0) | 2023.02.13 |
---|---|
Dockerfile (0) | 2023.02.13 |
vm 과 docker (0) | 2023.01.24 |