Aarushiar/pytorch-hackathon-support-env
0
1# Multi-stage build for PyTorch Hackathon Environment
2# Optimized for HuggingFace Spaces and general cloud deployment
3# Root-level Dockerfile uses full project as build context.
4
5FROM python:3.11-slim AS builder
6
7WORKDIR /app
8
9# Install system dependencies
10RUN apt-get update && \
11 apt-get install -y --no-install-recommends \
12 build-essential \
13 git \
14 curl \
15 && rm -rf /var/lib/apt/lists/*
16
17# Copy full project
18COPY . /app
19
20# Install Python dependencies
21RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
22 pip install --no-cache-dir -e . && \
23 pip install --no-cache-dir \
24 fastapi \
25 "uvicorn[standard]" \
26 pydantic \
27 requests \
28 websockets \
29 openai
30
31# Runtime stage
32FROM python:3.11-slim
33
34WORKDIR /app
35
36# Install runtime dependencies only
37RUN apt-get update && \
38 apt-get install -y --no-install-recommends \
39 curl \
40 && rm -rf /var/lib/apt/lists/*
41
42# Copy Python dependencies from builder
43COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
44COPY --from=builder /usr/local/bin /usr/local/bin
45
46# Copy application code
47COPY --from=builder /app /app
48
49# Set Python environment variables
50ENV PYTHONUNBUFFERED=1 \
51 PYTHONDONTWRITEBYTECODE=1 \
52 PATH="/app:$PATH"
53
54# Health check
55HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
56 CMD curl -f http://localhost:8000/health || exit 1
57
58# Expose port
59EXPOSE 8000
60
61# Run the FastAPI server from project root so all imports resolve
62CMD ["uvicorn", "server.app:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1"]
63 