Multi-stage build 가 왜 있냐
보통 빌드 땐 두꺼운 toolchain (컴파일러, 빌드 도구, dev 의존성) 필요한데 보낼 땐 슬림한 runtime 만 필요해. Multi-stage build 는 한 Dockerfile 에서 둘 다 줘.
FROM stage 여러 개 선언. 각각 다른 base image 가능. COPY --from=<stage> 로 이전 stage 에서 파일 가져와. 마지막 stage 만 최종 image 됨.
고전 Node 예시
Stage 1 은 Node + npm + 소스 + node_modules + dist/ 만드는 빌드 도구. Stage 2 는 nginx + dist/ 만. 최종 image: ~25MB. 단일 stage 였으면: ~1.2GB.