English

Docker 멀티스테이지 빌드로 이미지 줄이기

작업 절차 / docker-multistage.html

procedures환경: Docker 24+검증: 2026-10-19

빌드 도구와 실행에 필요한 것만 남겨 이미지 크기를 크게 줄이는 절차입니다.

💬 빌드용 이미지와 실행용 이미지를 나누면 최종 이미지가 가벼워집니다.

실행 순서

  • 빌드 단계에서 의존성 설치와 컴파일을 합니다.
  • 실행 단계에는 결과물과 런타임만 복사합니다.

Dockerfile 예시

# 1단계: 빌드
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# 2단계: 실행
FROM node:20-alpine
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm ci --omit=dev
CMD ["node", "dist/server.js"]

빌드와 확인

docker build -t myapp .
docker images myapp        # 크기 비교
docker run --rm -p 3000:3000 myapp

오류 발생 시 대응

  • 파일을 못 찾음: COPY --from=build 경로가 빌드 단계 결과와 맞는지 확인하세요.
  • .dockerignore 누락: node_modules를 이미지에 복사하면 커지고 느려집니다.

출처

검증일은 자료의 최신성을 나타냅니다. 오래된 자료는 적용 조건을 확인하세요.