# 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 from environment variable (default 80 for Easypanel) EXPOSE ${PORT:-80} # Start Astro preview server on the correct port CMD ["sh", "-c", "npm run preview -- --host 0.0.0.0 --port ${PORT:-80}"]