apk 패키지 버전 고정 누락

Dockerfile에서 apk add 시 패키지 버전을 지정하지 않으면 빌드 결과가 달라질 수 있습니다.

설명

apk add py3-pip처럼 버전 없이 패키지를 설치하면 Alpine 저장소 상태에 따라 다른 버전이 설치될 수 있습니다. 따라서 동일한 Dockerfile이라도 빌드 시점에 따라 다른 이미지가 만들어질 수 있습니다.

운영용 이미지는 재현 가능해야 장애 분석과 롤백이 쉽습니다. 필요한 패키지는 apk add package=version 형식으로 고정해 예기치 않은 변경을 줄이는 편이 안전합니다.

잠재적 영향

  • 저장소 변경에 따라 서로 다른 패키지 버전이 설치될 수 있습니다.
  • 의존성 변화로 애플리케이션 동작이 달라질 수 있습니다.
  • 테스트한 이미지와 실제 배포 이미지가 달라질 수 있습니다.

해결 방법

  • apk add package=version 형식으로 설치 버전을 명시하세요.
  • 한 번에 여러 패키지를 설치할 때도 가능한 한 버전을 함께 고정하세요.
  • 버전 갱신 시 테스트와 취약점 점검을 먼저 수행하세요.

예시

동일한 지원 대상 Alpine 환경에서 사용하는 설치 명령 발췌입니다. PIP_APK_VERSION에 해당 저장소에서 제공하는 검토한 버전과 -r 릴리스를 지정하세요. 고정한 패키지가 저장소에서 제거되면 설치가 실패할 수 있으므로 필요한 패키지의 보존도 계획하세요.

변경 전

dockerfile
RUN apk add --update py3-pip

변경 후

dockerfile
ARG PIP_APK_VERSION
RUN test -n "$PIP_APK_VERSION" && apk add --update "py3-pip=${PIP_APK_VERSION}"

설명:

  • 변경 전: 패키지 버전이 고정돼 있지 않아 빌드 결과가 달라질 수 있습니다.
  • 변경 후: 필요한 버전을 명시해 이미지 구성을 안정적으로 유지합니다.

참조