feat(dockerfile): bake Triton, GitPython, toml, and ComfyUI-Manager; pin system-wide deps

Bake more runtime dependencies into the image to reduce entrypoint work and avoid uv’s unsupported --user path without virtual environments. Pin Triton==3.4.0 alongside PyTorch 2.8/cu129, and install GitPython and toml system-wide so ComfyUI-Manager starts without attempting uv-based installs. Pre-clone ComfyUI-Manager into custom_nodes for faster startup; entrypoint will still update to origin/HEAD. No features removed; runtime paths and CUDA toolkit remain for SageAttention builds at startup.
This commit is contained in:
clsferguson 2025-10-01 21:21:24 -06:00 committed by GitHub
parent 207b64dc4c
commit c8d47b2560
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -71,19 +71,13 @@ RUN ln -sf /usr/local/cuda-12.9 /usr/local/cuda
RUN set -e; \ RUN set -e; \
if getent group 1000 >/dev/null 2>&1; then \ if getent group 1000 >/dev/null 2>&1; then \
EXISTING_GROUP=$(getent group 1000 | cut -d: -f1); \ EXISTING_GROUP=$(getent group 1000 | cut -d: -f1); \
echo "GID 1000 exists as group: $EXISTING_GROUP"; \ if [ "$EXISTING_GROUP" != "appuser" ]; then groupadd appuser; fi; \
if [ "$EXISTING_GROUP" != "appuser" ]; then \
groupadd appuser; \
fi; \
else \ else \
groupadd --gid 1000 appuser; \ groupadd --gid 1000 appuser; \
fi; \ fi; \
if getent passwd 1000 >/dev/null 2>&1; then \ if getent passwd 1000 >/dev/null 2>&1; then \
EXISTING_USER=$(getent passwd 1000 | cut -d: -f1); \ EXISTING_USER=$(getent passwd 1000 | cut -d: -f1); \
echo "UID 1000 exists as user: $EXISTING_USER"; \ if [ "$EXISTING_USER" != "appuser" ]; then useradd --gid appuser --create-home --shell /bin/bash appuser; fi; \
if [ "$EXISTING_USER" != "appuser" ]; then \
useradd --gid appuser --create-home --shell /bin/bash appuser; \
fi; \
else \ else \
useradd --uid 1000 --gid appuser --create-home --shell /bin/bash appuser; \ useradd --uid 1000 --gid appuser --create-home --shell /bin/bash appuser; \
fi; \ fi; \
@ -96,16 +90,24 @@ WORKDIR /app/ComfyUI
# Copy requirements with optional handling # Copy requirements with optional handling
COPY requirements.txt* ./ COPY requirements.txt* ./
# Core Python deps (torch CUDA 12.9, ComfyUI reqs, media/NVML libs, CuPy (CUDA 12.x wheel), and ORT-GPU) # Core Python deps (torch CUDA 12.9, pin Triton, plus common deps)
RUN python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu129 \ RUN python -m pip install --upgrade pip setuptools wheel \
&& python -m pip install triton \ && python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu129 \
&& python -m pip install "triton==3.4.0" \
&& python -m pip install --prefer-binary cupy-cuda12x \ && python -m pip install --prefer-binary cupy-cuda12x \
&& if [ -f requirements.txt ]; then python -m pip install -r requirements.txt; fi \ && if [ -f requirements.txt ]; then python -m pip install -r requirements.txt; fi \
&& python -m pip install imageio-ffmpeg "av>=14.2" nvidia-ml-py onnxruntime-gpu && python -m pip install imageio-ffmpeg "av>=14.2" nvidia-ml-py onnxruntime-gpu \
&& python -m pip install toml GitPython
# Copy the application # Copy the application
COPY . . COPY . .
# Pre-bake ComfyUI-Manager to reduce runtime work (entrypoint will still update)
RUN mkdir -p /app/ComfyUI/custom_nodes \
&& if [ ! -d "/app/ComfyUI/custom_nodes/ComfyUI-Manager" ]; then \
git clone --depth 1 https://github.com/ltdrdata/ComfyUI-Manager.git /app/ComfyUI/custom_nodes/ComfyUI-Manager || true; \
fi
# Entrypoint # Entrypoint
COPY entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh \ RUN chmod +x /entrypoint.sh \