Deployment & Ops Standards
Priority: P1 (OPERATIONAL)
Docker optimization and production deployment standards for NestJS applications.
Docker Optimization
- •Multi-Stage Builds: Mandatory.
- •Build Stage: Install
devDependencies, build NestJS (nest build). - •Run Stage: Copy only
distandnode_modules(pruned), usenode:alpine.
- •Build Stage: Install
- •Security: Do not run as
root.- •Dockerfile:
USER node.
- •Dockerfile:
Runtime Tuning (Node.js)
- •Memory Config: Container memory != Node memory.
- •Rule: Explicitly set Max Old Space.
- •Command:
node --max-old-space-size=XXX dist/main - •Calculation: Set to ~75-80% of Kubernetes Limit. (Limit: 1GB -> OldSpace: 800MB).
- •Graceful Shutdown:
- •Signal: Listen to
SIGTERM. - •NestJS:
app.enableShutdownHooks()is mandatory. - •Sleep: Add a "Pre-Stop" sleep in K8s (5-10s) to allow Load Balancer to drain connections before Node process stops accepting traffic.
- •Signal: Listen to
Init Patterns
- •Database Migrations:
- •Anti-Pattern: Running migration in
main.tson startup. - •Pro Pattern: Use an Init Container in Kubernetes that runs
npm run typeorm:migration:runbefore the app container starts.
- •Anti-Pattern: Running migration in