# Stage 1: Build React frontend FROM node:20-alpine AS frontend WORKDIR /app/frontend COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci COPY frontend/ ./ RUN npm run build # Stage 2: Python runtime FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt ENV PYTHONPATH=/app COPY backend/ backend/ COPY alembic/ alembic/ COPY alembic.ini . # Copy frontend build output COPY --from=frontend /app/frontend/dist/ static/ EXPOSE 8000 CMD ["sh", "-c", "alembic upgrade head && uvicorn backend.main:app --host 0.0.0.0 --port 8000"]