# syntax=docker/dockerfile:1.7 # ---------- frontend build ---------- FROM node:22-alpine AS frontend-build WORKDIR /app/frontend COPY frontend/package.json ./ RUN npm install --no-audit --no-fund COPY frontend/ ./ RUN npm run build # ---------- backend build ---------- FROM node:22-alpine AS backend-build WORKDIR /app/backend COPY backend/package.json ./ RUN npm install --no-audit --no-fund COPY backend/ ./ RUN npm run build # ---------- runtime ---------- FROM node:22-alpine AS runtime ENV NODE_ENV=production WORKDIR /app # Backend prod deps only. COPY backend/package.json ./ RUN npm install --omit=dev --no-audit --no-fund # Compiled backend, built frontend, baked data. COPY --from=backend-build /app/backend/dist ./dist COPY --from=frontend-build /app/frontend/dist ./public COPY data ./data ENV STATIC_ROOT=/app/public ENV DATA_ROOT=/app/data ENV PORT=3000 EXPOSE 3000 CMD ["node", "dist/main.js"]