# Dev image: run Vite with hot reload. Mount source as volume. FROM node:20-alpine WORKDIR /app COPY package.json package-lock.json* ./ RUN npm ci # App code is mounted; no COPY so edits trigger reload EXPOSE 3000 CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]