# Use Node.js 20 Alpine as the base image
FROM node:22-alpine

# Set working directory
WORKDIR /app

# Copy package.json and package-lock.json (if exists) to leverage Docker cache
COPY package*.json ./

# Install dependencies in a single RUN command to reduce layers
RUN npm install 

# Copy the rest of the application code
COPY . .

# Expose Vite's default port
EXPOSE 8080

# Install deps then dev server (needed when /app/node_modules is a Docker volume).
CMD ["sh", "-c", "npm install && npm run dev -- --host 0.0.0.0 --port 8080"]