FROM node:20-alpine AS frontend-build WORKDIR /app/frontend COPY frontend/package*.json ./ RUN npm install COPY frontend . RUN npm run build FROM node:20-alpine AS backend-build WORKDIR /app/backend COPY backend/package*.json ./ RUN npm install COPY backend . RUN npm run build FROM node:20-alpine AS prod WORKDIR /app/backend COPY backend/package*.json ./ RUN npm install --omit=dev COPY --from=backend-build /app/backend/dist ./dist COPY --from=frontend-build /app/frontend/dist ./dist/public EXPOSE 8080 CMD ["node", "dist/server.js"]