# Base Image: Lightweight Node.js Alpine
FROM node:18-alpine

# Set working directory
WORKDIR /app

# Copy package descriptors first to leverage Docker layer caching
COPY package*.json ./

# Install production dependencies only
RUN npm ci --omit=dev

# Copy server code and public assets
COPY server.js ./
COPY public/ ./public/

# Create persistent storage folder for SQLite database
RUN mkdir -p /app/data

# Environment configuration variables
ENV PORT=8085
ENV DATABASE_PATH=/app/data/crm.db
ENV NODE_ENV=production

# Expose internal Express port
EXPOSE 8085

# Define persistent volume directory for crm.db
VOLUME ["/app/data"]

# Run server
CMD ["npm", "start"]
