subul / Dockerfile
Kaadan's picture
fix docker injection
18e5c97
# ----------------------------
# STAGE 1: Build React frontend
# ----------------------------
FROM node:20-alpine AS frontend-builder
WORKDIR /build
# Copy package.json first for dependency installation
COPY frontend/package*.json ./
RUN npm ci # Install devDependencies for build
# Copy rest of frontend source code
COPY frontend/ ./
# Copy .env if exists
COPY frontend/.env* ./
# Build React app
RUN npm run build
# Clean up node_modules to reduce image size
RUN rm -rf node_modules
# ----------------------------
# STAGE 2: Build FastAPI backend + embed frontend
# ----------------------------
FROM python:3.11-slim
WORKDIR /app
# Install system dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends build-essential gcc && \
rm -rf /var/lib/apt/lists/*
# Install Python dependencies
COPY backend/requirements.txt ./
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# Copy backend source code
COPY backend/ ./
# Copy React build output into ./static for FastAPI
# FIX: The Vite/React build outputs to /build/build/client
COPY --from=frontend-builder /build/build/client ./static
# ----------------------------
# HF Spaces ENV
# ----------------------------
ENV PORT=7860
ENV HOST=0.0.0.0
ENV DEBUG=False
EXPOSE 7860
# ----------------------------
# Make startup script executable and set it as entrypoint
# ----------------------------
COPY backend/start.sh /app/start.sh
RUN chmod +x /app/start.sh
# ----------------------------
# Start FastAPI (runs migrations first)
# ----------------------------
CMD ["/app/start.sh"]