Part 23. Docker Multi-stage Build 이해하
Docker,Multi Stage Build,Dockerfile,Laravel,PHP,Node.js,Composer,Vite,Docker Build,Backend,DevOps
Part 23. Docker Multi-stage Build 이해하기
1. 이번 Part 목표
이번 Part에서는 Dockerfile에서 자주 사용하는 Multi-stage Build를 알아본다.
Laravel, Node.js, PHP 프로젝트를 Docker로 배포할 때 매우 자주 등장하는 개념이다.
2. 빌드와 실행은 다르다
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
프로젝트를 실행하려면 먼저 준비 과정이 필요하다.
의존성 설치
프론트엔드 빌드
파일 복사
실행 환경 구성
하지만 실제 서버 실행 시에는 모든 도구가 필요하지 않을 수 있다.
3. 예를 들어 Laravel 프로젝트
Laravel 프로젝트에는 여러 도구가 필요하다.
Composer
Node.js
npm
Vite
PHP
Nginx
하지만 최종 실행 환경에 Composer와 Node.js가 항상 필요한 것은 아니다.
4. 문제점
모든 도구를 최종 이미지에 다 넣으면 이미지가 무거워진다.
Composer 포함
Node.js 포함
npm 캐시 포함
빌드 파일 포함
↓
이미지 용량 증가
5. Multi-stage Build란?
Multi-stage Build는 Dockerfile 안에서 여러 단계를 나누어 이미지를 만드는 방식이다.
1단계: 의존성 설치
2단계: 프론트엔드 빌드
3단계: 실행 이미지 생성
6. 핵심 아이디어
빌드에 필요한 도구는 빌드 단계에서만 사용한다.
최종 이미지에는 실행에 필요한 파일만 복사한다.
빌드 단계
↓
필요한 결과물만 복사
↓
최종 실행 이미지
7. 예시 구조
FROM composer:2 AS vendor
FROM node:22 AS frontend
FROM php:8.4-fpm AS app
각 단계가 서로 다른 역할을 가진다.
8. composer 단계
FROM composer:2 AS vendor
PHP 패키지를 설치하는 단계다.
vendor 폴더를 만드는 역할을 한다.
9. node 단계
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
옆커폰
FROM node:22 AS frontend
프론트엔드 파일을 빌드하는 단계다.
Vite, npm build 등이 여기서 실행된다.
10. 최종 실행 단계
FROM php:8.4-fpm AS app
실제로 서버에서 실행될 이미지다.
이 단계에는 실행에 필요한 파일만 복사한다.
11. COPY --from
COPY --from=vendor /app/vendor /var/www/html/vendor
이전 단계에서 만든 결과물을 최종 이미지로 가져온다.
vendor 단계
↓
vendor 폴더 생성
↓
최종 이미지로 복사
12. 왜 좋은가?
최종 이미지가 가벼워진다.
빌드 도구와 실행 도구를 분리할 수 있다.
빌드용 도구
=
중간 단계에서만 사용
실행용 이미지
=
필요한 것만 포함
13. 보안 측면에서도 좋다
최종 이미지에 불필요한 도구가 적을수록 공격 면적도 줄어든다.
운영 서버에는 필요한 것만 남기는 것이 좋다.
14. Laravel Docker에서 자주 쓰는 이유
Laravel은 PHP와 프론트엔드 빌드가 함께 필요한 경우가 많다.
composer install
npm install
npm run build
php-fpm 실행
이런 과정을 단계별로 분리하면 Dockerfile이 더 효율적이 된다.
15. Part 23 정리
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
Multi-stage Build
=
빌드 단계를 나누는 방식
composer 단계
=
PHP 의존성 설치
node 단계
=
프론트엔드 빌드
final 단계
=
실제 실행 이미지
COPY --from
=
이전 단계 결과물 복사
이번 Part까지 Docker Basic 시리즈의 핵심 개념을 정리했다.
다음부터는 실제 프로젝트에 적용하는 Docker Practical 시리즈로 넘어갈 수 있다.
AD
제휴 광고
일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.
AD









