| FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04 |
|
|
| ENV DEBIAN_FRONTEND=noninteractive \ |
| TZ=America/Los_Angeles |
|
|
| ARG HF_TOKEN |
| ENV HF_TOKEN=${HF_TOKEN} |
|
|
| ARG USE_PERSISTENT_DATA=false |
| ENV USE_PERSISTENT_DATA=${USE_PERSISTENT_DATA} |
|
|
| RUN apt-get update && apt-get install -y \ |
| git \ |
| make build-essential libssl-dev zlib1g-dev \ |
| libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ |
| libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev git git-lfs \ |
| ffmpeg libsm6 libxext6 cmake libgl1-mesa-glx \ |
| && rm -rf /var/lib/apt/lists/* \ |
| && git lfs install |
|
|
| WORKDIR /code |
|
|
| COPY ./requirements.txt /code/requirements.txt |
|
|
| |
| RUN mkdir -p /data/ComfyUI/models/checkpoints \ |
| /data/ComfyUI/models/loras \ |
| /data/ComfyUI/models/vae \ |
| /data/ComfyUI/models/controlnet \ |
| /data/ComfyUI/models/upscale_models \ |
| /data/ComfyUI/models/gligen \ |
| /data/ComfyUI/custom_nodes \ |
| /data/ComfyUI/output && \ |
| chown -R 1000:1000 /data |
|
|
| |
| RUN useradd -m -u 1000 user |
| USER user |
| ENV HOME=/home/user \ |
| PATH=/home/user/.local/bin:$PATH |
|
|
| |
| RUN curl https://pyenv.run | bash |
| ENV PATH=$HOME/.pyenv/shims:$HOME/.pyenv/bin:$PATH |
|
|
| ARG PYTHON_VERSION=3.10.12 |
| RUN pyenv install $PYTHON_VERSION && \ |
| pyenv global $PYTHON_VERSION && \ |
| pyenv rehash && \ |
| pip install --no-cache-dir --upgrade pip setuptools wheel && \ |
| pip install --no-cache-dir \ |
| datasets \ |
| huggingface-hub "protobuf<4" "click<8.1" |
|
|
| RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt |
|
|
| WORKDIR /data/ComfyUI |
|
|
| |
| RUN rm -rf * && \ |
| git clone https://github.com/comfyanonymous/ComfyUI . && \ |
| git pull && \ |
| pip install xformers --no-cache-dir -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu121 |
|
|
| |
| RUN echo "Linking private bucket folders..." && \ |
| ln -sfn /dataprivate/custom_nodes /data/ComfyUI/custom_nodes 2>/dev/null || true && \ |
| ln -sfn /dataprivate/workflows /data/ComfyUI/workflows 2>/dev/null || true && \ |
| ln -sfn /dataprivate/input /data/ComfyUI/input 2>/dev/null || true && \ |
| ln -sfn /dataprivate/output /data/ComfyUI/output 2>/dev/null || true && \ |
| echo "Private bucket folders linked." |
|
|
| |
| RUN echo "Copying additional custom nodes from public bucket..." && \ |
| cp -r /datapublic/comfy/custom_nodes/ComfyUI-Manager-main /data/ComfyUI/custom_nodes/ComfyUI-Manager 2>/dev/null || true && \ |
| echo "Additional nodes copied." |
|
|
| |
| RUN cd /data/ComfyUI/custom_nodes/comfyui_controlnet_aux && pip install -r requirements.txt || true |
| RUN cd /data/ComfyUI/custom_nodes/stability-ComfyUI-nodes && pip install -r requirements.txt || true |
|
|
| |
| USER root |
| COPY <<'EOF' /start.sh |
| |
| echo "=== Container started as $(whoami) ===" |
| echo "Current dir: $(pwd)" |
|
|
| echo "=== Bucket contents ===" |
| ls -la /datapublic/comfy 2>&1 | cat || echo "No /datapublic/comfy" |
|
|
| echo "=== Copying models from public bucket ===" |
| if [ -d "/datapublic/comfy" ]; then |
| cp -nv /datapublic/comfy/stabilityai/sd-vae-ft-mse-original/vae-ft-mse-840000-ema-pruned.safetensors /data/ComfyUI/models/vae/ 2>&1 || true |
| cp -nv /datapublic/comfy/LA0077/v1-5-pruned-emaonly-fp16.safetensors/v1-5-pruned-emaonly-fp16.safetensors /data/ComfyUI/models/checkpoints/ 2>&1 || true |
| echo "Models copied." |
| fi |
|
|
| echo "=== Starting ComfyUI (verbose) ===" |
| cd /data/ComfyUI |
| exec python main.py --listen 0.0.0.0 --port 7860 --output-directory "/dataprivate/output" --front-end-version latest --verbose 2>&1 |
| EOF |
| RUN chmod +x /start.sh |
| USER user |
|
|
| CMD ["/start.sh"] |