FROM node:20-alpine WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci # source code is bind-mounted at runtime — node_modules come from this image layer CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0", "--port", "5173"]