Spaces:
Sleeping
Sleeping
| # Stage 1: Build Client | |
| FROM node:18-alpine AS client-builder | |
| WORKDIR /app/client | |
| COPY client/package*.json ./ | |
| RUN npm install | |
| COPY client/ ./ | |
| # Next.js export requires this to create the 'out' folder | |
| RUN npm run build | |
| # Stage 2: Build Server | |
| FROM node:18-alpine AS server-builder | |
| WORKDIR /app/server | |
| COPY server/package*.json ./ | |
| RUN npm install | |
| COPY server/ ./ | |
| RUN npm run build | |
| # Stage 3: Runner | |
| FROM node:18-alpine | |
| WORKDIR /app | |
| # Copy Server | |
| COPY --from=server-builder /app/server/dist ./server/dist | |
| COPY --from=server-builder /app/server/package*.json ./server/ | |
| RUN cd server && npm install --production | |
| # Copy Frontend Static Files (from 'out' folder) | |
| COPY --from=client-builder /app/client/out ./client/out | |
| ENV PORT=7860 | |
| ENV NODE_ENV=production | |
| EXPOSE 7860 | |
| CMD ["node", "server/dist/server.js"] |