thedocks/comfyui.xpu/Dockerfile
2025-12-13 11:04:32 +00:00

188 lines
5.3 KiB
Docker

################################################################################
# Dockerfile that builds 'yanwk/comfyui-boot:xpu'
# A runtime environment for https://github.com/comfyanonymous/ComfyUI
# Running on XPU (Intel GPU).
# Does NOT install IPEX (Intel Extension for PyTorch).
# Using Python 3.13, GCC 14.
# Using 'root' inside the container.
################################################################################
FROM fedora:42
LABEL maintainer="code@yanwk.fun"
RUN set -eu
################################################################################
# OS Packages
RUN --mount=type=cache,target=/var/cache/dnf \
dnf install -y --nogpgcheck \
'https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-42.noarch.rpm' \
&& dnf upgrade -y \
&& dnf install -y \
python3.13-devel \
python3-pip \
python3-wheel \
python3-setuptools \
python3-cython \
make \
ninja \
python3-cmake
# RUN --mount=type=cache,target=/var/cache/dnf \
# dnf install -y \
# python3-matplotlib \
# python3-mpmath \
# python3-numpy \
# python3-onnx
RUN --mount=type=cache,target=/var/cache/dnf \
dnf install -y \
ffmpeg \
x264 \
x265 \
default-fonts-cjk
RUN --mount=type=cache,target=/var/cache/dnf \
dnf install -y \
python3-opencv \
python3-cairo
RUN --mount=type=cache,target=/var/cache/dnf \
dnf install -y \
mesa-libGL \
mesa-libEGL \
# python3-GitPython \
git \
# python3-pandas \
# python3-scikit-build-core \
# python3-scikit-image \
# python3-scikit-learn \
fish \
aria2 \
fd-find \
vim \
which
RUN --mount=type=cache,target=/var/cache/dnf \
dnf install -y \
intel-compute-runtime \
intel-level-zero \
intel-level-zero-devel \
oneapi-level-zero \
oneapi-level-zero-devel \
intel-ocloc \
intel-opencl \
intel-igc \
clinfo \
openssl
################################################################################
# GCC 14
# Fedora 42 defaults to GCC 15
RUN --mount=type=cache,target=/var/cache/dnf \
dnf install -y \
gcc14 \
gcc14-c++ \
&& update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-14 90 \
&& update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-14 90 \
&& update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-14 90 \
&& update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 90 \
&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 90 \
&& update-alternatives --install /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-14 90 \
&& update-alternatives --install /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-14 90 \
&& update-alternatives --install /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-14 90 \
&& update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-14 90 \
&& update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-14 90 \
&& update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-14 90
# ################################################################################
# PyTorch (No IPEX)
ARG PIP_ROOT_USER_ACTION='ignore'
ARG PIP_NO_BUILD_ISOLATION=1
RUN --mount=type=cache,target=/root/.cache/pip \
pip list \
&& pip install \
--upgrade pip wheel setuptools
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
--dry-run torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/xpu \
&& pip install \
--no-deps torch \
--index-url https://download.pytorch.org/whl/xpu
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/xpu
# Deps for ComfyUI & custom nodes
COPY builder-scripts/. /builder-scripts/
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
-r /builder-scripts/pak3.txt
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
-r /builder-scripts/pak5.txt
# Temp fix for SentencePiece on CMAKE 4+
ENV CMAKE_POLICY_VERSION_MINIMUM=3.5
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
-r /builder-scripts/pak7.txt
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
-r /builder-scripts/pak9.txt
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
-r /builder-scripts/pakA.txt
# Ensure deps match
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/xpu
################################################################################
WORKDIR /default-comfyui-bundle
RUN bash /builder-scripts/preload-cache.sh
RUN --mount=type=cache,target=/root/.cache/pip \
pip install \
-r '/default-comfyui-bundle/ComfyUI/requirements.txt' \
-r '/default-comfyui-bundle/ComfyUI/manager_requirements.txt' \
&& pip list
################################################################################
ENV LD_LIBRARY_PATH="/usr/local/lib\
:/usr/local/lib64/python3.13/site-packages/torch/lib/\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
################################################################################
RUN df -h \
&& du -ah /root \
&& find /root/ -mindepth 1 -delete
COPY runner-scripts/. /runner-scripts/
USER root
VOLUME /root
WORKDIR /root
EXPOSE 8188
ENV CLI_ARGS=""
CMD ["bash","/runner-scripts/entrypoint.sh"]