# Stage 1: Install dependencies
FROM node:20-slim AS builder

WORKDIR /app/backend

# Copy package files and install
COPY backend/package*.json ./
RUN npm install --omit=dev --no-optional && npm cache clean --force

# Stage 2: Production runtime
FROM node:20-slim

# Create necessary directories
RUN mkdir -p /app/data /app/backend && \
    chmod 755 /app/data

# Copy node_modules from builder
COPY --from=builder /app/backend/node_modules /app/backend/node_modules

# Copy backend source
WORKDIR /app/backend
COPY backend/package*.json ./
COPY backend/server.js .

# Environment variables
ENV NODE_ENV=production
ENV PORT=3000
ENV DATABASE_PATH=/app/data/mail-client.db

EXPOSE 3000

CMD ["node", "--max-old-space-size=4096", "--optimize-for-size", "--max-http-header-size=16384", "server.js"]