mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-12-16 01:37:04 +08:00
Add Docker setup for ComfyUI with GitHub release tracking
- Add Dockerfile with CUDA 12.6 and Python 3.12 base - Add docker-compose.yml with GPU support and volume mounts - Add docker-entrypoint.sh script with venv management and OTEL support - Add comfy-node-install.sh helper for custom node installation - Update .gitignore to exclude Docker-related artifacts - Entrypoint ensures frontend package matches requirements.txt version - Optional OTEL instrumentation when OTEL_EXPORTER_OTLP_ENDPOINT is set - Volume-mounted repo allows git checkout of release tags without rebuilds
This commit is contained in:
parent
2505cc4bc9
commit
1d5b9bc4fa
@ -12,7 +12,7 @@ ENV PYTHONUNBUFFERED=1
|
||||
|
||||
# Install system dependencies
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python3.12 python3.12-venv git git-lfs wget \
|
||||
python3.12 python3.12-venv python3-pip git git-lfs wget \
|
||||
libgl1 libglib2.0-0 libsm6 libxext6 libxrender1 \
|
||||
ffmpeg \
|
||||
espeak-ng libespeak-ng1 \
|
||||
@ -22,8 +22,7 @@ RUN apt-get update && apt-get install -y \
|
||||
&& ln -sf /usr/bin/pip3 /usr/bin/pip \
|
||||
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install OpenTelemetry packages for optional instrumentation
|
||||
RUN pip install --no-cache-dir opentelemetry-distro opentelemetry-exporter-otlp
|
||||
# OpenTelemetry packages will be installed in the venv by entrypoint script if needed
|
||||
|
||||
WORKDIR /app/ComfyUI
|
||||
|
||||
|
||||
12
docker-compose.override.yml.example
Normal file
12
docker-compose.override.yml.example
Normal file
@ -0,0 +1,12 @@
|
||||
# Example override file to disable GPU for testing
|
||||
# Copy this to docker-compose.override.yml to use CPU-only mode
|
||||
services:
|
||||
comfyui:
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices: []
|
||||
# Remove ipc: host if not using GPU
|
||||
# ipc: host
|
||||
|
||||
|
||||
72
scripts/docker-entrypoint.sh
Normal file
72
scripts/docker-entrypoint.sh
Normal file
@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
# Docker entrypoint script for ComfyUI
|
||||
# Handles virtual environment setup, dependency installation, custom nodes, and optional OTEL instrumentation
|
||||
|
||||
set -e
|
||||
|
||||
COMFYUI_DIR="/app/ComfyUI"
|
||||
VENV_DIR="/app/venv"
|
||||
WORKDIR="${COMFYUI_DIR}"
|
||||
|
||||
cd "${WORKDIR}"
|
||||
|
||||
# Create virtual environment if it doesn't exist
|
||||
if [ ! -d "${VENV_DIR}" ]; then
|
||||
echo "Creating virtual environment..."
|
||||
python -m venv "${VENV_DIR}"
|
||||
fi
|
||||
|
||||
# Activate virtual environment
|
||||
source "${VENV_DIR}/bin/activate"
|
||||
|
||||
# Upgrade pip
|
||||
pip install --upgrade pip setuptools wheel
|
||||
|
||||
# Install PyTorch with CUDA 12.6 support
|
||||
echo "Installing PyTorch with CUDA 12.6..."
|
||||
pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
|
||||
|
||||
# Install ComfyUI requirements (upgrade ensures packages match requirements.txt)
|
||||
echo "Installing ComfyUI requirements..."
|
||||
pip install --upgrade --no-cache-dir -r requirements.txt
|
||||
|
||||
# Install OpenTelemetry packages if OTEL endpoint is configured
|
||||
if [ -n "${OTEL_EXPORTER_OTLP_ENDPOINT}" ]; then
|
||||
echo "Installing OpenTelemetry packages..."
|
||||
pip install --no-cache-dir opentelemetry-distro opentelemetry-exporter-otlp
|
||||
fi
|
||||
|
||||
# Explicitly ensure frontend package matches requirements.txt version
|
||||
echo "Verifying frontend package version..."
|
||||
REQUIRED_FRONTEND_VERSION=$(grep "^comfyui-frontend-package==" requirements.txt | cut -d'=' -f3)
|
||||
if [ -n "$REQUIRED_FRONTEND_VERSION" ]; then
|
||||
echo "Installing frontend package version: $REQUIRED_FRONTEND_VERSION"
|
||||
pip install --upgrade --force-reinstall --no-cache-dir "comfyui-frontend-package==${REQUIRED_FRONTEND_VERSION}"
|
||||
else
|
||||
echo "Warning: Could not determine required frontend version from requirements.txt"
|
||||
fi
|
||||
|
||||
# Optional: Install curated custom nodes (can be enabled via environment variable)
|
||||
if [ "${INSTALL_CURATED_NODES:-false}" = "true" ]; then
|
||||
echo "Installing curated custom nodes..."
|
||||
export COMFYUI_DIR="${COMFYUI_DIR}"
|
||||
comfy-node-install \
|
||||
https://github.com/city96/ComfyUI-GGUF \
|
||||
https://github.com/rgthree/rgthree-comfy \
|
||||
https://github.com/ClownsharkBatwing/RES4LYF \
|
||||
https://github.com/giriss/comfy-image-saver || echo "Warning: Some custom nodes failed to install"
|
||||
fi
|
||||
|
||||
# Check if OpenTelemetry endpoint is configured
|
||||
if [ -n "${OTEL_EXPORTER_OTLP_ENDPOINT}" ]; then
|
||||
echo "OpenTelemetry endpoint detected, enabling instrumentation..."
|
||||
exec opentelemetry-instrument \
|
||||
--traces_exporter otlp \
|
||||
--metrics_exporter otlp \
|
||||
--logs_exporter otlp \
|
||||
python main.py --listen 0.0.0.0 --port 8188 "$@"
|
||||
else
|
||||
echo "Starting ComfyUI without OpenTelemetry instrumentation..."
|
||||
exec python main.py --listen 0.0.0.0 --port 8188 "$@"
|
||||
fi
|
||||
|
||||
Loading…
Reference in New Issue
Block a user