#Docker#DevOps
Docker 멀티스테이지 빌드 최적화
이미지 크기를 1.2GB에서 180MB로 줄이는 과정. deps → builder → runner 패턴과 레이어 캐시 전략을 실제 프로젝트에 적용해봤습니다.
Docker 이미지 크기 최적화는 배포 속도와 직결됩니다. 이번 글에서는 Next.js 프로젝트의 이미지를 1.2GB에서 180MB로 줄인 과정을 공유합니다.
멀티스테이지 빌드의 핵심은 빌드에 필요한 도구와 실행에 필요한 것들을 분리하는 것입니다. deps 스테이지에서는 패키지만 설치하고, builder 스테이지에서 빌드를 진행한 뒤, runner 스테이지에서는 실제 실행에 필요한 파일만 복사합니다.
node_modules는 개발 의존성을 포함하면 매우 커집니다. --production 플래그나 npm ci를 활용해 프로덕션 의존성만 설치하면 크기를 크게 줄일 수 있습니다.
레이어 캐시도 중요합니다. package.json과 lock 파일을 소스코드보다 먼저 COPY하면, 소스 변경 시에도 패키지 설치 레이어는 캐시를 재활용할 수 있어 빌드 시간이 단축됩니다.