# Accelerated Base Image with Intel QuickSync, NVIDIA CUDA, FFmpeg, and Python support # Provides a comprehensive base for ML/CV applications with hardware acceleration FROM ubuntu:22.04 LABEL maintainer="j" LABEL description="Base image with Intel QuickSync, NVIDIA CUDA support, FFmpeg, and Python 3.11" # Prevent interactive prompts during package installation ENV DEBIAN_FRONTEND=noninteractive # Install system dependencies including Intel and NVIDIA support RUN apt-get update && apt-get install -y \ # Base utilities curl \ wget \ git \ build-essential \ pkg-config \ software-properties-common \ # Python 3.11 python3.11 \ python3.11-dev \ python3-pip \ python3.11-venv \ # FFmpeg with hardware acceleration support ffmpeg \ # Intel QuickSync / VAAPI dependencies intel-media-va-driver-non-free \ vainfo \ libva-drm2 \ libva-dev \ libva2 \ i965-va-driver \ # OpenGL/Graphics libraries libgl1 \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender-dev \ libgomp1 \ libglu1-mesa \ libglu1-mesa-dev \ libgl1-mesa-dev \ libgl1-mesa-glx \ # OpenCV dependencies libopencv-dev \ libgstreamer1.0-0 \ libgstreamer-plugins-base1.0-0 \ libgstreamer-plugins-bad1.0-0 \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly \ gstreamer1.0-libav \ gstreamer1.0-tools \ # Video codec libraries libx264-dev \ libx265-dev \ libvpx-dev \ libfdk-aac-dev \ libmp3lame-dev \ libopus-dev \ # Image format libraries libjpeg-dev \ libpng-dev \ libtiff-dev \ libwebp-dev \ # Additional ML/numeric libraries libhdf5-dev \ libatlas-base-dev \ gfortran \ && rm -rf /var/lib/apt/lists/* # Set Python 3.11 as default RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1 && \ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 && \ update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 # Upgrade pip and install essential Python packages RUN python -m pip install --upgrade pip setuptools wheel # Install core Python ML/CV packages (CPU versions by default) # CUDA versions can be overlaid at runtime or in derived images RUN pip install --no-cache-dir \ numpy \ scipy \ pandas \ matplotlib \ pillow \ opencv-python-headless \ scikit-learn \ tqdm \ pyyaml \ requests # Install PyTorch CPU version (can be overridden in derived images for CUDA) RUN pip install --no-cache-dir \ torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu # Set environment variables for hardware acceleration # Intel QuickSync / VAAPI ENV LIBVA_DRIVER_NAME=iHD ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri # Python environment ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 # OpenCV ENV OPENCV_VIDEOIO_PRIORITY_GSTREAMER=1 # FFmpeg hardware acceleration preference ENV FFMPEG_HWACCEL_PRIORITY="vaapi,cuda,auto" # NVIDIA Container Toolkit environment variables (will be used if NVIDIA runtime is available) ENV NVIDIA_VISIBLE_DEVICES=all ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video # Create a non-root user for running applications RUN useradd -m -s /bin/bash -u 1000 appuser && \ usermod -a -G video appuser # Create common directories RUN mkdir -p /app /data /models && \ chown -R appuser:appuser /app /data /models # Set working directory WORKDIR /app # Health check command to verify Python and FFmpeg are working HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD python -c "import torch, cv2, numpy; print('OK')" && ffmpeg -version > /dev/null 2>&1 # Default to non-root user (can be overridden in derived images) USER appuser # Default command - can be overridden in derived images CMD ["/bin/bash"]