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.
51 lines
1.9 KiB
YAML
51 lines
1.9 KiB
YAML
# Dev-окружение: один контейнер с bind-mount к корню репо, GPU доступ.
|
|
#
|
|
# Запуск:
|
|
# docker compose -f docker/docker-compose.dev.yml up -d
|
|
# docker compose -f docker/docker-compose.dev.yml exec dev bash
|
|
#
|
|
# Все артефакты сборки попадают в /workspace/build (на хосте — ./build),
|
|
# в git исключены через .gitignore.
|
|
|
|
services:
|
|
dev:
|
|
build:
|
|
context: ..
|
|
dockerfile: docker/Dockerfile.dev
|
|
image: cuframes-dev:latest
|
|
container_name: cuframes-dev
|
|
hostname: cuframes-dev
|
|
init: true # PID 1 = tini, чтобы Ctrl-C корректно
|
|
stdin_open: true
|
|
tty: true
|
|
# GPU + CUDA IPC требует shared IPC namespace для cross-process тестов
|
|
# внутри docker (producer и consumer в одном контейнере — ок без host)
|
|
ipc: shareable
|
|
runtime: nvidia
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: all
|
|
capabilities: [gpu, compute, utility, video]
|
|
environment:
|
|
NVIDIA_VISIBLE_DEVICES: all
|
|
NVIDIA_DRIVER_CAPABILITIES: "compute,utility,video"
|
|
# Чтобы CUDA IPC handles работали через /dev/shm
|
|
# (в default docker /dev/shm обрезан 64 MB; здесь поднимаем)
|
|
shm_size: "2gb"
|
|
volumes:
|
|
# Bind-mount корня репо → /workspace
|
|
- ../:/workspace:cached
|
|
# CUDA IPC создаёт Unix-sockets в /run/cuframes, /dev/shm — bind на host
|
|
# для cross-container scenarios (через ipc=shareable + host-side mounts)
|
|
- /run/cuframes:/run/cuframes:rw
|
|
# Useful caps для perf / valgrind / gdb
|
|
cap_add:
|
|
- SYS_PTRACE
|
|
security_opt:
|
|
- seccomp:unconfined
|
|
working_dir: /workspace
|
|
command: tail -f /dev/null # держать контейнер живым, в него exec'аемся
|