# UltraSimple — production container.
# Build:  docker build -t ultrasimple .
# Run:    docker run -d -p 8080:3200 -e APP_URL=https://yourdomain.com \
#           -v ultrasimple-data:/app/backend/data -v ultrasimple-uploads:/app/backend/uploads \
#           --name ultrasimple ultrasimple
# The app listens on 3200 inside the container; map it to any host port you like.

# ---- Stage 1: build the frontend ----
FROM node:22-slim AS build
WORKDIR /app/frontend
COPY frontend/package*.json ./
RUN npm ci
COPY frontend/ ./
RUN npm run build

# ---- Stage 2: runtime ----
FROM node:22-slim
ENV NODE_ENV=production
WORKDIR /app

# Install backend production dependencies first (better layer caching).
COPY backend/package*.json ./backend/
RUN cd backend && npm install --omit=dev

# App source + entry point.
COPY app.js package.json ./
COPY backend/ ./backend/
# Built frontend from stage 1.
COPY --from=build /app/frontend/dist ./frontend/dist

# Persist the database and uploads outside the container.
VOLUME ["/app/backend/data", "/app/backend/uploads"]

EXPOSE 3200
CMD ["node", "app.js"]
