# Building stage
FROM node:18-alpine AS builder
# Set working directory
WORKDIR /app
# Copy package.json and package-lock.json
COPY package*.json ./
# Install dependencies
RUN npm ci
# Copy source code
COPY . .
# Build application
RUN npm run build
# Production stage
FROM node:18-alpine
# Set working directory
WORKDIR /app
# Copy built assets from the builder stage
COPY --from=builder /app/build ./build
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/prisma ./prisma
# Set environment variables
ENV NODE_ENV=production
# Generate Prisma client
RUN npx prisma generate
# Expose the port the app runs on
EXPOSE 3000
# Command to run the application
CMD ["node", "build/src/index.js"]