🔍 검색 키워드: 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% 단축할 수 있습니다.
댓글 없음:
댓글 쓰기