# Stage 1: build dependencies FROM python:3.11-slim AS builder WORKDIR /app # Install build dependencies RUN apt-get update && apt-get install -y \ build-essential \ default-libmysqlclient-dev \ pkg-config \ && rm -rf /var/lib/apt/lists/* # Pre-download wheels to avoid recompiling bcrypt from source RUN pip install --no-cache-dir --prefix=/install \ 'bcrypt==4.0.1' \ 'cffi>=2.0' \ 'pycparser>=2.0' # Install Python dependencies COPY requirements.txt . RUN pip install --no-cache-dir --prefix=/install -r requirements.txt # Stage 2: slim runtime FROM python:3.11-slim WORKDIR /app # Install runtime dependencies only (no build tools) RUN apt-get update && apt-get install -y \ default-libmysqlclient-dev \ curl \ && rm -rf /var/lib/apt/lists/* # Copy installed packages from builder COPY --from=builder /install /usr/local # Copy application code COPY app/ ./app/ COPY requirements.txt ./ # Make entrypoint COPY entrypoint.sh . RUN chmod +x entrypoint.sh EXPOSE 8000 ENTRYPOINT ["./entrypoint.sh"]