# Stage 1: Frontend build FROM node:20-alpine AS frontend WORKDIR /app/frontend COPY frontend/package*.json ./ RUN npm install COPY frontend/ ./ RUN npx nuxi generate # Stage 2: Backend build FROM node:20-alpine AS backend WORKDIR /app/backend COPY backend/package*.json ./ RUN npm install COPY backend/ ./ RUN npx prisma generate RUN npm run build # Stage 3: Production FROM node:20-alpine WORKDIR /app COPY --from=backend /app/backend/dist ./dist COPY --from=backend /app/backend/node_modules ./node_modules COPY --from=backend /app/backend/package.json ./ COPY --from=backend /app/backend/prisma ./prisma COPY --from=backend /app/backend/seed.js ./seed.js COPY --from=frontend /app/frontend/.output/public ./public EXPOSE 3000 CMD ["sh", "-c", "ls -la prisma/migrations/ && ls -la prisma/migrations/*/ && npx prisma migrate deploy --schema prisma/schema.prisma && node seed.js; node dist/src/main.js"]