Files
cuframes/docker/Dockerfile.dev
T
gx 6962bc3c7e docker: dev environment с CUDA 12.4 + build tools
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.
2026-05-14 21:18:32 +01:00

73 lines
2.3 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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"]