0f7af70b90
Updated Docker configuration, refactored middleware for improved error handling, and restructured account, order, plan, profile, and support modules, including their routes, services, and validations. Enhanced email processing queues and utilities for token generation, pagination, and response management to streamline the application architecture and enhance maintainability.
42 lines
819 B
Docker
42 lines
819 B
Docker
# ---------- BUILD STAGE ----------
|
|
FROM node:20-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Only install deps first (cache friendly)
|
|
COPY package*.json ./
|
|
RUN npm ci
|
|
|
|
# Copy source
|
|
COPY . .
|
|
|
|
# Generate prisma + build
|
|
RUN npx prisma generate
|
|
RUN npm run build
|
|
|
|
|
|
# ---------- PRODUCTION STAGE ----------
|
|
FROM node:20-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
# Only install production deps
|
|
COPY package*.json ./
|
|
RUN npm ci --omit=dev && npm cache clean --force
|
|
|
|
# Copy Prisma generated client + schema
|
|
COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
|
|
COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma
|
|
COPY --from=builder /app/prisma ./prisma
|
|
|
|
# Copy built app
|
|
COPY --from=builder /app/dist ./dist
|
|
|
|
# Uploads folder
|
|
RUN mkdir -p /app/uploads
|
|
|
|
EXPOSE 5000
|
|
|
|
CMD ["node", "dist/server.js"] |