NestJS 이미지는 소스 복사, 의존성 설치, 빌드 산출물 복사, 런타임 실행을 레이어 단위로 고정해 환경 차이를 줄입니다.
npm ci 후 TypeScript를 컴파일해 dist를
만듭니다.
npm ci --omit=dev로 런타임에 필요한 패키지만
남깁니다.
node dist/main.js가 실행될 최소 파일만 복사합니다.
package*.json을 먼저 복사해 의존성 레이어를
재사용합니다.
node_modules, dist, .env가
이미지에 섞이지 않게 합니다.
EXPOSE 3000은 문서화이고 실제 공개는
-p 옵션입니다.