패스잇
인프라 & 클라우드 · 심화

동일한 Dockerfile로 빌드했는데도 CI 환경마다 빌드 캐시가 거의 적중하지 않아 빌드 시간이 길어지는 상황입니다. 레이어 캐시가 무효화되는 원인과, 캐시 적중률을 높이기 위한 Dockerfile 작성 전략을 설명해주세요.

힌트 · 레이어 캐시 무효화 규칙(명령 변경·이전 레이어 변경)과 명령 순서·의존성 설치 분리, 빌드 컨텍스트 관점에서 접근하세요.

Dockerfile레이어 캐시빌드 컨텍스트명령어 순서멀티스테이지 빌드

모범답안

CI 환경마다 빌드 캐시가 잘 적중하지 않는 문제는 주로 Dockerfile의 명령어 순서나 빌드 컨텍스트 변경 때문입니다. Docker는 각 명령어를 독립적인 레이어로 관리하는데, 이전 레이어가 변경되면 이후 레이어의 캐시가 무효화됩니다.

이를 해결하기 위해 몇 가지 전략을 사용할 수 있습니다. 첫째, 자주 변경되지 않는 의존성 설치 명령어를 먼저 배치하여 해당 레이어의 캐시를 최대한 활용합니다. 둘째, 애플리케이션 소스 코드 복사 명령어를 의존성 설치 이후에 배치하여 코드 변경 시에도 의존성 레이어 캐시는 유지되도록 합니다.

또한, 멀티스테이지 빌드를 활용하면 최종 이미지 크기를 줄이고 불필요한 빌드 의존성을 제거하여 캐시 효율성을 높일 수 있습니다. 빌드 컨텍스트를 최소화하는 것도 중요합니다. .dockerignore 파일을 잘 설정하여 불필요한 파일이 빌드 컨텍스트에 포함되지 않도록 하면 빌드 속도 향상과 캐시 무효화 방지에 도움이 됩니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 DevOps / CI·CD 면접 질문

← DevOps / CI·CD 면접 질문 전체 보기