File size: 1,080 Bytes
f9a2deb
 
 
 
 
 
 
 
 
 
 
 
b8dbf99
 
 
 
f9a2deb
b8dbf99
5b9b110
b8dbf99
f9a2deb
 
 
 
 
 
 
 
 
 
b8dbf99
47dea89
b8dbf99
70b313b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# ── Stage 1: Build React frontend ────────────────────────────────────────────
FROM node:20-slim AS frontend-builder

WORKDIR /frontend

COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci

COPY frontend/ ./
RUN npm run build

# ── Stage 2: Python / FastAPI backend ─────────────────────────────────────────
FROM python:3.11-slim

WORKDIR /app

# Python dependencies
COPY backend/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Application code
COPY backend/  /app/backend/
COPY server/   /app/server/
COPY grader/   /app/grader/
COPY models.py      /app/models.py
COPY inference.py   /app/inference.py
COPY openenv.yaml   /app/openenv.yaml

# Built React SPA – served by FastAPI at /  (assets at /assets/*)
COPY --from=frontend-builder /frontend/dist /app/frontend/dist

EXPOSE 7860

CMD ["uvicorn", "server.app:app", "--host", "0.0.0.0", "--port", "7860"]