ComfyUI / docker /README.md
aleph65's picture
v6: document launcher scripts
73d1186 verified
|
Raw
History Blame Contribute Delete
5.22 kB

plx1029/comfyui-qwen β€” prebaked ComfyUI image (H100 / RunPod)

Everything from the manual setup is baked in β€” no reinstalling on new pods:

  • Base: runpod/pytorch:1.0.2-cu1281-torch280-ubuntu2404 (torch 2.8.0+cu128, Python 3.12)
  • v3: everything lives in /workspace:
    • ComfyUI @ 35c1470935044be5610a81d46e57922a8a598c6c at /workspace/ComfyUI
    • workflows at /workspace/workflows/ (qwen-loras-very-good-nsfw.json, qwen-edit-nsfw.json, head-swap-flux-klein.json) β€” also baked into the ComfyUI workflow browser
    • /workspace/download_missing_models.sh β€” pick workflows, it fetches their missing models from hf.co/aleph65/ComfyUI into place (prompts for HF token or reads $HF_TOKEN); still on PATH via symlink
  • v4: ComfyUI does NOT auto-start (was the default in v3). Run comfy in a terminal, or set COMFY_AUTOSTART=true in the pod env to re-enable (port 7865, log /workspace/comfyui.log, auto-restart loop).
  • v5: fresh workflows + downloader on every boot β€” refresh-workspace.sh re-pulls workflows/ (mirrored, deletions included), download_missing_models.sh, and README.md from hf.co/aleph65/ComfyUI at startup, using HUGGING_FACE_ACCESS_TOKEN/HF_TOKEN if set. On any failure the existing copies stay. Set WORKSPACE_REFRESH=false to disable.
  • v5: claude alias β€” in interactive shells claude runs IS_SANDBOX=1 claude --dangerously-skip-permissions (via /root/.bash_aliases).
  • v6: launcher scripts in /workspace β€” start_comfy (frees port 7865 then runs cd /workspace/ComfyUI && python main.py --listen 0.0.0.0 --port 7865 --enable-manager) and claude_start.sh (IS_SANDBOX=1 claude --dangerously-skip-permissions). Both are re-pulled from hf.co/aleph65/ComfyUI on every boot by refresh-workspace.sh.
  • rgthree-comfy @ 27b4f4c in custom_nodes/
  • comfyui-manager 4.2.2 + all pip deps preinstalled system-wide
  • Manager config baked: security_level = weak, network_mode = personal_cloud
  • huggingface_hub + hf_transfer preinstalled for fast model downloads
  • Claude Code CLI preinstalled (claude), on PATH, with bypassPermissions as the default permission mode
  • The old image-root /ComfyUI copy is removed (whiteout) β€” /workspace is the single source of truth.

Models are NOT in the image (keep them on the network volume, as before). No secrets are baked in either (the image is public).

Network volumes

If a network volume is mounted at /workspace it shadows the baked-in files. On boot, seed-workspace.sh restores whatever is missing (ComfyUI/, workflows/, download_missing_models.sh) from a compressed seed at /opt/workspace-seed.tar.gz β€” never overwriting existing files, so models and outputs already on the volume are untouched.

Using it on RunPod

  1. Create a template with container image plx1029/comfyui-qwen:v6.
  2. Expose HTTP port 7865 (plus 8888/22 as usual).
  3. Set HUGGING_FACE_ACCESS_TOKEN in the template env (used for the boot-time workflow/script refresh and by download_missing_models.sh).
  4. (Optional) attach your network volume at /workspace.
  5. In a terminal: download_missing_models.sh to fetch models for your workflows, then comfy to start ComfyUI (or set COMFY_AUTOSTART=true).

COMFY_PORT overrides the port. COMFY_AUTOSTART=true enables auto-start (otherwise run comfy manually). WORKSPACE_REFRESH=false skips the boot refresh.

How the image was built

No Docker daemon exists on RunPod pods (or the build sandbox), so images are assembled daemonlessly: v1 with crane (pip-delta + git clones appended as one OCI layer); v2 with skopeo + umoci; v3 with crane append β€” a single layer holding /workspace (ComfyUI + workflows + downloader), the seed tarball, the new startup scripts, and a whiteout of the old /ComfyUI, appended on top of v2 (the ~11 GB base is never re-uploaded); v4 with crane append on top of v3 (no-auto-start start-comfy.sh, boot refresh of the downloader, updated seed tarball); v5 with crane append on top of v4 β€” a small layer holding refresh-workspace.sh, the updated start-comfy.sh, /root/.bash_aliases, and current workflows/ + download_missing_models.sh copies; v6 with crane append on top of v5 β€” a small layer holding the two launcher scripts (/workspace/start_comfy, /workspace/claude_start.sh) and an updated refresh-workspace.sh that also re-pulls them at boot.

Note: /opt/workspace-seed.tar.gz inside v6 still holds the v4-era workflows and does not include start_comfy/claude_start.sh β€” that's fine, the boot refresh fetches them from the HF repo on the next start (only relevant when a network volume shadows the baked-in /workspace).

Dockerfile in this directory is the reproducible equivalent for rebuilding on any machine with real Docker (build from the repo root β€” the context needs download_missing_models.sh and workflows/):

docker build -t plx1029/comfyui-qwen:v6 -f docker/Dockerfile .
docker push plx1029/comfyui-qwen:v6