# ============================================================================= # POS MICRO - Backend Dockerfile # ============================================================================= # Build stage FROM node:20-alpine AS builder WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm ci # Copy source code COPY . . # Build application RUN npm run build # Production stage FROM node:20-alpine AS production WORKDIR /app # Copy package files COPY package*.json ./ # Install only production dependencies RUN npm ci --only=production && npm cache clean --force # Copy built application COPY --from=builder /app/dist ./dist # Create non-root user RUN addgroup -g 1001 -S nodejs && \ adduser -S nestjs -u 1001 -G nodejs USER nestjs # Expose port EXPOSE 3000 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:3000/api/v1/health || exit 1 # Start application CMD ["node", "dist/main"] # Development stage FROM node:20-alpine AS development WORKDIR /app # Copy package files COPY package*.json ./ # Install all dependencies RUN npm ci # Copy source code COPY . . # Expose port EXPOSE 3000 # Start in development mode CMD ["npm", "run", "start:dev"]