Skip to Content
Suffering builds character
아카이브25.devopsDocker특징2.이미지 관리7.이미지 레이어 캐싱을 통한 Dockerfile 스크립트 개선

7.이미지 레이어 캐싱을 통한 Dockerfile 스크립트 개선

1. Dockerfile 스크립트 최적화

Dockerfile 스크립트에 작성된 개별 명령어는 이미지 레이어와 1:1 매칭되며, 명령어의 결과가 이전 빌드 내역과 동일할 경우 이전에 캐시된 레이어를 재사용하게됨

따라서 FROM, WORKDIR 등과 같이 자주 변경되지 않는 명령어들을 가급적 먼저 배치하고, 자주 변경되는 명령어들을 뒤에 오도록 배치하는 것이 용량, 빌드 등에서 더 효율적임

1-1. ch03-web-ping 디렉토리로 이동하여 app.js 코드 변경

아래 경로로 이동

terminal
cd ~/080258/ch03/exercises/web-ping

app.js 코드 수정

terminal
sudo vi app.js

가장 마지막 줄에 아래의 코드 추가

app.js
console.log('updated');

수정된 코드로 이미지 다시 빌드

terminal
docker build -t web-ping:v2 .

CACHED로 출력된 부분이 변경된 부분이 없기 때문에 재사용한 부분이라고 볼 수 있음

1-2. Dockerfile 스크립트 수정

아래와 같이 수정할 경우 조금 더 최적화를 수행할 수 있음

Dockerfile
FROM diamol/node CMD ["node", "/web-ping/app.js"] ENV TARGET="blog.sixeyed.com" \ METHOD="HEAD" \ INTERVAL="3000" WORKDIR /web-ping
1-2-1. 자주 변경되지 않는 명령어는 앞으로 배치

CMD 명령어를 통해 수행되는 node 명령어는 node.js 런타임만 설치되어 있으면 되기 때문에 FROM 명령어 뒤에만 위치하면 됨

1-2-2. ENV 명령어는 하나의 명령어로 그룹화

ENV 명령어를 개별적으로 작성하지 않고, \ 옵션을 통해 개행하여 하나의 명령어로 그룹화하여 레이어 개수 줄이기

Last updated on