설명
yum install httpd처럼 버전 없이 패키지를 설치하면 저장소 상태에 따라 다른 버전이 설치될 수 있습니다. 같은 Dockerfile을 다시 빌드해도 결과가 달라질 수 있어 이미지 재현성이 떨어집니다.
배포용 이미지는 언제 빌드해도 비슷한 결과가 나와야 장애 분석과 롤백이 쉽습니다. 필요한 패키지는 버전을 함께 지정해 예기치 않은 변경을 줄이는 편이 안전합니다.
잠재적 영향
- 빌드 시점에 따라 서로 다른 패키지 버전이 설치될 수 있습니다.
- 예상하지 못한 패키지 변경으로 애플리케이션 동작이 달라질 수 있습니다.
- 테스트 환경과 운영 환경의 이미지 구성이 달라질 수 있습니다.
해결 방법
yum install -y httpd-<version>-<release>형식으로 저장소에서 확인한 정확한 버전과 릴리스를 지정하세요.- 변수로 버전을 관리하더라도 실제 설치되는 값이 고정되도록 유지하세요.
- 버전 변경 시 테스트와 보안 점검 후에만 반영하세요.
예시
yum을 제공하는 지원 대상 이미지의 설치 명령 발췌입니다. HTTPD_VERSION_RELEASE에는 해당 이미지의 저장소에서 설치 가능한 검토한 버전-릴리스를 제공하세요. 다른 패키지와 베이스 이미지의 고정 및 보안 업데이트도 별도로 관리해야 합니다.
변경 전
dockerfile
RUN yum install -y httpd && yum clean all
RUN ["yum", "install", "httpd"]
변경 후
dockerfile
ARG HTTPD_VERSION_RELEASE
RUN test -n "$HTTPD_VERSION_RELEASE" && yum install -y "httpd-${HTTPD_VERSION_RELEASE}" && yum clean all
설명:
- 변경 전: 패키지 버전이 고정돼 있지 않아 저장소 변경이 그대로 빌드 결과에 반영될 수 있습니다.
- 변경 후: 필요한 버전을 명시해 이미지 구성을 더 안정적으로 유지합니다.