6962bc3c7e
Dockerfile.dev + docker-compose.dev.yml + docker/README.md. Base: nvidia/cuda:12.4.1-cudnn-devel-ubuntu24.04. В контейнер включены: - CUDA toolkit (nvcc, headers, libs) - GCC 12, Clang + clang-format + clang-tidy - CMake + Ninja - FFmpeg dev headers (6.x системные) — для linking при разработке filter - Python 3.12 + dev (для Phase 3 bindings) - Profiling/debug tools: valgrind, gdb, strace, ltrace docker-compose.dev.yml настройки: - runtime: nvidia + --gpus all - ipc: shareable — для cross-container CUDA IPC (Phase 1+) - shm_size: 2gb — стандартный 64 MB не хватит для frame buffers - SYS_PTRACE + seccomp:unconfined — для gdb/strace внутри (dev-only) - bind-mount корня репо → /workspace - /run/cuframes для Unix sockets Использование документировано в docker/README.md. Production-images (FFmpeg-with-plugin, Frigate drop-in) — отдельная работа в Phase 4.
73 lines
2.3 KiB
Docker
73 lines
2.3 KiB
Docker
# Dev-окружение для cuframes — содержит CUDA toolkit (с nvcc), build tools,
|
||
# линкеры/анализаторы. GPU прокидывается через `--gpus all` на runtime.
|
||
#
|
||
# Base: nvidia/cuda devel-image c CUDA 12.4 + cuDNN 9 на Ubuntu 24.04.
|
||
# devel-вариант (не runtime) — нужен для компиляции CUDA-кода (nvcc, headers).
|
||
|
||
FROM nvidia/cuda:12.4.1-cudnn-devel-ubuntu24.04
|
||
|
||
# Не запрашивать tzdata interactive при apt
|
||
ENV DEBIAN_FRONTEND=noninteractive
|
||
|
||
# Build tools
|
||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||
build-essential \
|
||
ca-certificates \
|
||
clang \
|
||
clang-format \
|
||
clang-tidy \
|
||
cmake \
|
||
ninja-build \
|
||
pkg-config \
|
||
gcc-12 g++-12 \
|
||
gdb \
|
||
git \
|
||
nasm \
|
||
yasm \
|
||
libtool \
|
||
autoconf \
|
||
automake \
|
||
# Системные libs (для FFmpeg build в Phase 2 и для examples)
|
||
libavcodec-dev \
|
||
libavformat-dev \
|
||
libavutil-dev \
|
||
libavfilter-dev \
|
||
libswscale-dev \
|
||
libssl-dev \
|
||
# Python для bindings (Phase 3)
|
||
python3 \
|
||
python3-dev \
|
||
python3-pip \
|
||
# Profiling / debug tools
|
||
valgrind \
|
||
strace \
|
||
ltrace \
|
||
linux-tools-common \
|
||
# Просмотр и работа в контейнере
|
||
vim \
|
||
curl \
|
||
wget \
|
||
less \
|
||
htop \
|
||
sudo \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# Симлинки для удобства (CUDA устанавливает специфичные пути)
|
||
ENV CUDA_HOME=/usr/local/cuda
|
||
ENV PATH=${CUDA_HOME}/bin:${PATH}
|
||
ENV LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}
|
||
|
||
# Поднятие лимита открытых файлов для Unix sockets + eventfd (cuframes producer
|
||
# может держать N consumers × M eventfds)
|
||
RUN echo '* soft nofile 65536' >> /etc/security/limits.conf && \
|
||
echo '* hard nofile 65536' >> /etc/security/limits.conf
|
||
|
||
# Working directory совпадает с bind-mount из docker-compose
|
||
WORKDIR /workspace
|
||
|
||
# Default shell — bash с history-file под /workspace/.bash_history (persistent)
|
||
ENV HISTFILE=/workspace/.bash_history
|
||
SHELL ["/bin/bash", "-c"]
|
||
|
||
CMD ["/bin/bash"]
|