Multi-stage build
Dockerfile에서 여러 개의 베이스 이미지를 사용하여 이미지를 빌드하는 방법
- 최종 이미지의 크기를 줄이고, 빌드 프로세스를 효율적으로 관리하기 위해 사용
- FROM을 기준으로 여러 스테이지로 나뉘어 이미지를 빌드하고, 마지막 스테이지에서 생성한 파일과 상태를 기반으로 빌드됨
- 각 스테이지는 독립적으로, 스테이지가 종료되면 해당 스테이지에 생성한 파일은 사라짐
- COPY --from=<stage name>을 통해 이전 스테이지에서 생성한 파일을 복사할 수 있음

Multi-stage build 예시
# Stage 1: Build FROM node:18-alpine AS builder WORKDIR /app COPY package.json yarn.lock ./ RUN yarn install COPY . . RUN yarn build # Stage 2: Production FROM nginx:alpine COPY --from=builder /app/build /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
1단계: Build stage
- FROM node:18-alpine AS builder: node:18-alpine 이미지를 사용해서 빌드, 단계는 builder로 명시
- 빌드에 필요한 의존성 설치하고, 전체 소스 코드를 복사 후 빌드
2단계: Production Stage
- FROM nginx:alpine: nginx 이미지 사용
- COPY --from=builder: builder 스테이지에서 빌드된 파일들을 복사
- 포트 열고, nginx 실행
참고:
'DevOps > Docker' 카테고리의 다른 글
| [Docker] dockerhub에 이미지 업로드 (1) | 2024.12.31 |
|---|---|
| [Docker] 투표 앱 docker compose로 배포해보기 (1) | 2024.12.31 |
| [Docker] docker compose (1) | 2024.12.31 |
| [Docker] Volume (1) | 2024.12.31 |
| [Docker] Dockefile (0) | 2024.12.31 |
