DOCKER PIPELINE

컨테이너화는 빌드 환경과 실행 환경을 분리하는 작업입니다.

NestJS 이미지는 소스 복사, 의존성 설치, 빌드 산출물 복사, 런타임 실행을 레이어 단위로 고정해 환경 차이를 줄입니다.

Image실행 가능한 읽기 전용 템플릿
Container이미지를 실제로 실행한 인스턴스
Registry이미지를 저장하고 배포하는 저장소
builder개발 의존성까지 설치하고 빌드

npm ci 후 TypeScript를 컴파일해 dist를 만듭니다.

deps프로덕션 의존성만 분리

npm ci --omit=dev로 런타임에 필요한 패키지만 남깁니다.

runtime작은 최종 이미지로 실행

node dist/main.js가 실행될 최소 파일만 복사합니다.

캐시 순서

package*.json을 먼저 복사해 의존성 레이어를 재사용합니다.

.dockerignore

node_modules, dist, .env가 이미지에 섞이지 않게 합니다.

포트 노출

EXPOSE 3000은 문서화이고 실제 공개는 -p 옵션입니다.