
All checks were successful
Gitea Actions Demo / Build (push) Successful in 21m21s
- Ubuntu 22.04 base with Python 3.11 - Intel Media Driver and VAAPI for QuickSync hardware acceleration - NVIDIA CUDA support via container toolkit - FFmpeg with hardware codec support - OpenCV, PyTorch, and common ML/CV packages - Non-root user setup for security - Provides comprehensive base for ML/CV applications with hardware acceleration
138 lines
3.9 KiB
Docker
138 lines
3.9 KiB
Docker
# 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"] |