설명
pip install은 다운로드 응답과 빌드한 wheel 등을 캐시할 수 있습니다. 이 캐시가 최종 이미지에 포함되면 런타임에 필요하지 않은 파일 때문에 이미지 크기가 커질 수 있습니다.
빌드 캐시 자체는 반복 다운로드와 빌드 비용을 줄입니다. BuildKit 캐시 마운트처럼 최종 이미지 밖에서 관리한다면 캐시를 유지하는 것이 적절할 수 있습니다.
잠재적 영향
- 불필요한 캐시가 이미지 크기와 저장·전송 비용을 늘릴 수 있습니다.
- 캐시를 모두 끄면 반복 빌드 시간과 네트워크 사용량이 늘어날 수 있습니다.
해결 방법
- 캐시가 이미지 레이어에 남는 일반 설치에서는 pip install --no-cache-dir를 사용하거나 최종 이미지에 포함되지 않는 빌드 캐시를 구성하세요.
- 최종 이미지의 캐시 포함 여부를 확인하세요. --no-cache-dir는 해당 명령의 캐시 사용을 끄며 앞선 레이어의 캐시를 삭제하지는 않습니다.
예시
두 예제는 pip 캐시 설정만 비교합니다. flask와 requests의 버전 고정 및 업데이트 정책은 별도로 관리하세요.
변경 전
dockerfile
FROM python:3.12-slim
RUN pip install flask requests
변경 후
dockerfile
FROM python:3.12-slim
RUN pip install --no-cache-dir flask requests
설명:
- 변경 전: 기본 pip 캐시가 이미지에 포함될 수 있습니다.
- 변경 후: 해당 설치에서 pip 캐시를 사용하지 않습니다. 다른 명령이나 앞선 레이어의 캐시는 별도 확인해야 합니다.