🚀 Docker 이미지 빌드를 더 빠르게!
Build Cache 완벽 이해와 실전 활용법
✅ Build Cache란 무엇인가?
Docker에서 이미지를 빌드할 때, 같은 명령이 반복되면 이전 결과를 재활용해 속도를 높일 수 있도록 해주는 것이 **Build Cache(빌드 캐시)**입니다.
즉, Docker는 과거에 실행했던 RUN, COPY, ADD, ENV 등의 명령 결과를 기억하고, 동일한 명령이 나오면 다시 실행하지 않고 캐시된 결과를 재사용합니다.
📌 캐시를 잘 활용하면 빌드 속도는 수배 빨라지고, 네트워크 트래픽과 디스크 사용량도 감소합니다.
🔁 Docker Build Cache 작동 방식
Docker는 Dockerfile을 위에서 아래로 순차적으로 해석하며, 각 단계별로 캐시 여부를 판단합니다.
아래 조건이 모두 만족되면 해당 단계는 캐시를 사용합니다:
- 명령어가 정확히 동일해야 함 (RUN apt-get update vs RUN apt-get install → 다름)
- 의존된 파일이 변경되지 않아야 함 (COPY, ADD 명령의 파일)
- 이전 단계까지 모두 캐시를 사용해야 함
🚨 중간에 하나라도 캐시가 깨지면 그 이후 단계는 전부 다시 실행됨
🔧 예제: Build Cache 적용 전후 비교
Dockerfile 예시:
🧪 첫 빌드:
👉 모든 단계가 새롭게 실행되므로 시간이 오래 걸림
🧪 두 번째 빌드 (파일 변경 없음):
👉 대부분의 단계가 [CACHED] 로 표시되며 즉시 완료됨!
📂 캐시 확인 방법
Docker는 각 단계별로 캐시 여부를 로그에 표시합니다:
위처럼 시간이 거의 들지 않았다면 캐시가 잘 활용된 것입니다.
--no-cache 옵션을 붙이면 강제로 모든 캐시를 무시할 수 있습니다:
🎯 Build Cache 최적화 전략
COPY 최소화 | 먼저 package.json만 복사하여 npm 캐시 유지 |
의존 설치 → 코드 복사 | RUN npm install 전까지 캐시를 최대한 유지 |
.dockerignore 적극 활용 | 불필요한 파일 캐시에 포함되지 않도록 제외 |
📌 예: COPY . . 전에 COPY package.json만 분리하는 이유
COPY . .로 먼저 전체 파일을 복사하면 작은 코드 수정에도 npm install 캐시가 깨짐
→ 필요한 파일만 단계적으로 복사해야 캐시 효율 극대화 가능
🧠 실전 팁
- 개발 중에는 캐시 사용
- 반복 빌드 시 속도 개선 효과 큼
- 운영 빌드 시에는 --no-cache로 강제 재빌드 추천
- 오래된 캐시가 문제를 일으킬 수 있으므로 주기적 클린 빌드 필요
- CI/CD 파이프라인에서 캐시 전략을 명확히 정의
- GitHub Actions, GitLab CI 등에서도 캐시 디렉토리를 재활용 가능
✅ 결론
Docker Build Cache는 단순한 "속도 향상" 그 이상의 의미를 가집니다.
프로젝트 구조 설계, 파일 복사 순서, 빌드 자동화까지 영향을 미치는 요소로, 특히 빌드 시간이 중요한 CI 환경에서는 반드시 고려해야 할 핵심 기술입니다.
Dockerfile을 깔끔하게 구성하고, 캐시가 최대한 활용되도록 명령어 순서를 고민하는 것이 프로 개발자의 첫걸음입니다.
Docker 컨테이너와 로컬 파일 공유하는 법
📂 Docker 컨테이너와 로컬 파일 공유하는 법Bind Mount를 활용한 로컬 파일 연동 완벽 가이드✅ 왜 로컬 파일을 컨테이너와 공유해야 할까?Docker는 컨테이너 내부에서 코드, 설정 파일, 환경 변수를
jjig810906.tistory.com
'Program' 카테고리의 다른 글
Docker 멀티 스테이지 빌드란? (빌드 시간 단축, 이미지 크기 감소) (0) | 2025.06.06 |
---|---|
Docker로 멀티 컨테이너 애플리케이션 구성하기 (0) | 2025.06.06 |
Docker 컨테이너와 로컬 파일 공유하는 법 (2) | 2025.06.05 |
Docker Verified Publisher API (DVP) (0) | 2025.06.05 |
Docker 컨테이너 데이터 Volume / Bind Mounts (0) | 2025.06.05 |