# ── Dev stage ──────────────────────────────────────────────────────── FROM node:20-slim AS dev WORKDIR /app COPY package.json package-lock.json* ./ RUN npm install COPY . . EXPOSE 4321 CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"] # ── Build stage ────────────────────────────────────────────────────── FROM node:20-slim AS build WORKDIR /app COPY package.json package-lock.json* ./ RUN npm ci COPY . . RUN npm run build # ── Prod stage ─────────────────────────────────────────────────────── FROM node:20-slim AS prod WORKDIR /app # Copy the built Astro SSR server COPY --from=build /app/dist ./dist COPY --from=build /app/node_modules ./node_modules COPY --from=build /app/package.json ./ # Run as non-root RUN useradd --create-home --shell /bin/bash astro USER astro ENV HOST=0.0.0.0 ENV PORT=4321 EXPOSE 4321 CMD ["node", "dist/server/entry.mjs"]