# Astro Production Dockerfile FROM node:20-alpine WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies (use npm install if no lock file) RUN if [ -f package-lock.json ]; then npm ci --omit=dev; else npm install --omit=dev; fi # Copy all source code COPY . . # Build Astro project (includes public folder in dist) RUN npm run build # Expose port EXPOSE 4321 # Start Astro preview server CMD ["npm", "run", "preview", "--", "--host", "0.0.0.0", "--port", "4321"]