EDU_Recommender / Dockerfile
Omarrran's picture
Add EduRecommender HuggingFace Spaces app
5bd3663
# ═══════════════════════════════════════════════════════════════════════
# EduRecommender β€” HuggingFace Spaces Docker image
#
# Multi-stage build:
# Stage 1: Build the React client
# Stage 2: Run the Node.js server + serve static assets
# ═══════════════════════════════════════════════════════════════════════
# ── Stage 1: Build React client ──────────────────────────────────────
FROM node:20-alpine AS builder
WORKDIR /app/client
COPY client/package.json client/package-lock.json* ./
RUN npm ci --no-audit --no-fund
COPY client/ ./
RUN npm run build
# ── Stage 2: Production server ───────────────────────────────────────
FROM node:20-alpine
WORKDIR /app
# Install server dependencies
COPY server/package.json server/package-lock.json* ./server/
RUN cd server && npm ci --no-audit --no-fund --omit=dev
# Copy server source
COPY server/ ./server/
# Copy built React assets
COPY --from=builder /app/client/dist ./client/dist
# HuggingFace Spaces expects port 7860
ENV PORT=7860
EXPOSE 7860
CMD ["node", "server/src/index.js"]