pip 설치 캐시의 이미지 포함 점검

최종 이미지에는 불필요한 pip 캐시를 남기지 마세요.

설명

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 캐시를 사용하지 않습니다. 다른 명령이나 앞선 레이어의 캐시는 별도 확인해야 합니다.

참조