각 명령은 layer; 각 layer 는 캐시
Docker 는 각 명령을 캐시랑 비교. 명령이랑 입력 (COPY 가 참조하는 파일, RUN 이 쓰는 arg) 안 바뀌면 캐시 layer 재사용. 캐시 미스 나는 첫 명령이 그 이후 모든 layer 깨.
캐시 깨기 버그
RUN pip install 전에 COPY . . 하면 — 코드 한 줄 바꿔도 다 다시 복사 + install layer 깨짐 + 모든 의존성 재설치. 느림. 짜증. 쉽게 피할 수 있어.
해결: 의존성 먼저, 코드 나중
의존성 manifest (requirements.txt, package.json, Cargo.toml) 먼저 복사. install. 그 다음에 나머지 소스 복사. 코드 변경이 의존성 layer 안 깨.