
데브옵스
Docker 빌드시 의존성(패키지 버전) 문제 확인 및 해결 방법
두줄요약
Docker 빌드 중 의존성 충돌로 패키지 버전이 바뀌는 문제를 확인하는 방법과 원인을 설명했습니다. 최초 설치 단계에서 버전을 명시해 재설치를 막는 해결책도 제시했습니다.
문제 상황
- Docker 빌드 과정에서 기존 패키지 버전이 의존성 충돌로 재설치되며 업/다운그레이드 발생
- 예시로
gradio가pillow<12.0,>=8.0을 요구해pillow 12.0.0이 제거되고11.3.0으로 변경 - 런타임에서 다른 패키지와 버전 미스매칭이 나며 오류 가능성 증가
원인 분석
torchvision설치 시pillow!=8.3.*,>=5.3.0조건으로 최초에는pillow 12.0.0이 선택됨- 이후
gradio설치가 더 좁은 버전 조건을 적용해 기존 버전을 다시 내림 - Dockerfile 내 설치 순서와 버전 미지정이 반복 재설치의 원인
해결 방법
- Docker build 로그를
--progress=plain --no-cache와tee로 저장해 uninstall 구간 확인 - 최초 설치 단계부터 필요한 패키지 버전을 명시해 고정
numpy,requests,pillow처럼 함께 쓰는 의존성도 미리 호환 버전으로 지정
