feat: add davinci resolve image
This commit is contained in:
71
davinci/Dockerfile
Normal file
71
davinci/Dockerfile
Normal file
@@ -0,0 +1,71 @@
|
||||
# syntax=docker/dockerfile:1.7
|
||||
#
|
||||
# Base image + dependency list copied from zelikos/davincibox
|
||||
# (https://github.com/zelikos/davincibox), the most battle-tested distrobox
|
||||
# image for DaVinci Resolve on Linux. One deliberate difference from
|
||||
# upstream: Resolve itself is baked in at build time here (this repo's
|
||||
# convention: build once, push, no setup step after `distrobox create`)
|
||||
# instead of being installed into the box afterwards by their
|
||||
# `setup-davinci` script.
|
||||
#
|
||||
# The silent-install invocation and the patchelf fix below are copied
|
||||
# verbatim from davincibox's `system_files/usr/bin/setup-davinci` script,
|
||||
# cross-confirmed against fat-tire/resolve's Dockerfile
|
||||
# (https://github.com/fat-tire/resolve) which drives the same installer with
|
||||
# the same `-i -a -y` flags at Docker build time — not guessed.
|
||||
FROM quay.io/fedora/fedora-toolbox:44 AS base
|
||||
|
||||
LABEL com.github.containers.toolbox="true" \
|
||||
usage="This image is meant to be used with the distrobox command" \
|
||||
summary="DaVinci Resolve, baked in, for distrobox"
|
||||
|
||||
# davincibox's own dependency list, proven against real Resolve installs
|
||||
# (Fedora Atomic, Bluefin, Bazzite - see davinci/CLAUDE.md).
|
||||
COPY davinci-dependencies /davinci-dependencies
|
||||
RUN dnf -y update && \
|
||||
grep -v '^#' /davinci-dependencies | xargs dnf -y install && \
|
||||
rm /davinci-dependencies && \
|
||||
dnf clean all
|
||||
|
||||
# The .run installer as downloaded from Blackmagic's site and unzipped
|
||||
# (DaVinci_Resolve_<version>_Linux.run, or the _Studio_ variant), placed
|
||||
# next to this Dockerfile.
|
||||
ARG RESOLVE_INSTALLER=DaVinci_Resolve_Linux.run
|
||||
COPY ${RESOLVE_INSTALLER} /tmp/resolve.run
|
||||
|
||||
# `-i -a -y`: silent install, accept all, assume yes - same flags used by
|
||||
# davincibox's setup-davinci and by fat-tire/resolve's Dockerfile.
|
||||
# QT_QPA_PLATFORM=minimal + SKIP_PACKAGE_CHECK=1: needed with no display
|
||||
# attached, from davincibox (see zelikos/davincibox#35).
|
||||
RUN cd /tmp && \
|
||||
chmod +x resolve.run && \
|
||||
./resolve.run --appimage-extract >/dev/null && \
|
||||
cd squashfs-root && \
|
||||
QT_QPA_PLATFORM=minimal SKIP_PACKAGE_CHECK=1 ./AppRun -i -a -y && \
|
||||
cd /tmp && rm -rf resolve.run squashfs-root
|
||||
|
||||
# Resolve's own binaries dlopen these libs without a DT_NEEDED entry
|
||||
# (avoids the LD_PRELOAD workaround described at
|
||||
# https://www.reddit.com/r/voidlinux/comments/12g71x0/comment/l2cwo27/).
|
||||
# Same fix, same (full-path) argument form, as davincibox's setup-davinci.
|
||||
RUN find /opt/resolve/bin -executable -type f -exec patchelf \
|
||||
--add-needed /usr/lib64/libglib-2.0.so.0 \
|
||||
--add-needed /usr/lib64/libgdk_pixbuf-2.0.so.0 \
|
||||
--add-needed /usr/lib64/libgio-2.0.so.0 \
|
||||
--add-needed /usr/lib64/libgmodule-2.0.so.0 {} \;
|
||||
|
||||
COPY davinci-run /usr/local/bin/davinci-run
|
||||
RUN chmod +x /usr/local/bin/davinci-run
|
||||
|
||||
FROM base AS amd
|
||||
# Covers AMD (ROCm) and Intel (intel-compute-runtime) in one image, like
|
||||
# davincibox's "-opencl" variant. mesa-libOpenCL (rusticl) is removed first:
|
||||
# it breaks ROCm outright (zelikos/davincibox#173).
|
||||
RUN dnf -y remove mesa-libOpenCL && \
|
||||
dnf -y install intel-compute-runtime rocm-opencl && \
|
||||
dnf clean all
|
||||
|
||||
FROM base AS nvidia
|
||||
# OpenCL/CUDA/NVENC come from the host driver, not baked in.
|
||||
ENV NVIDIA_VISIBLE_DEVICES=all
|
||||
ENV NVIDIA_DRIVER_CAPABILITIES=all
|
||||
Reference in New Issue
Block a user