금요일

🔍 검색 키워드: Docker 멀티스테이지 빌드, Docker 캐시 최적화, Dockerfile 성능, Docker 이미지 크기, Docker BuildKit, 컨테이너 최적화

Docker 멀티스테이지 빌드와 캐시 전략으로 빌드 시간 70% 단축

Docker 이미지 빌드는 CI/CD 파이프라인에서 가장 시간이 오래 걸리는 단계입니다. 잘못된 Dockerfile 구조는 매번 모든 의존성을 다시 다운로드하고, 컴파일하며, 불필요한 파일까지 포함시킵니다.

문제 증상

$ docker build -t myapp:latest .
Step 4/15 : RUN npm ci
 ---> cde345cde678 (cache miss) 120.5s
Total: 245.8s  ← 너무 오래 걸림!

# 이미지 크기: 980MB

원인 분석

원인 1: 레이어 캐싱을 무시하는 구조

FROM node:18
COPY . .
RUN npm ci
RUN npm run build

원인 2: 불필요한 파일을 최종 이미지에 포함

# 최종 이미지: node_modules (650MB) + 소스코드 + dist = 900MB

해결 방법

해결책 1: 레이어 순서 최적화

FROM node:18
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["node", "dist/index.js"]

해결책 2: 멀티스테이지 빌드

FROM node:18 AS builder
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:18-alpine
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]

성능 개선 결과

방식빌드 시간이미지 크기
기본 방식245초980MB
멀티스테이지15초180MB

이 전략을 적용하면 빌드 시간을 93% 단축할 수 있습니다.

댓글 없음:

댓글 쓰기