FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 # Prevent interactive prompts during package installation ENV DEBIAN_FRONTEND=noninteractive # Install Python and system dependencies RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ python3-dev \ libgl1-mesa-glx \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender-dev \ wget \ && rm -rf /var/lib/apt/lists/* # Set working directory WORKDIR /app # Copy requirements first for better caching COPY requirements.txt . # Install Python dependencies (with pip cache for faster rebuilds) RUN --mount=type=cache,target=/root/.cache/pip \ pip3 install -r requirements.txt # Download YOLO11s model (small, efficient) RUN python3 -c "from ultralytics import YOLO; YOLO('yolo11s.pt')" # Copy application code COPY main.py . # Expose port EXPOSE 5002 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD python3 -c "import urllib.request; urllib.request.urlopen('http://localhost:5002/health')" || exit 1 # Run the service CMD ["python3", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "5002"]