Skip to content

Latest commit

 

History

History
328 lines (254 loc) · 10.8 KB

README.zh.adoc

File metadata and controls

328 lines (254 loc) · 10.8 KB

用于 ComfyUI 的 Docker 镜像

工作流程

  1. 初次启动时,启动脚本会下载 ComfyUI、ComfyUI-Manager 以及一些常用的功能性模型。

  2. 整个 ComfyUI 会保存在本地 (./storage/ComfyUI) 。

  3. 如果你已经有了现成的 ComfyUI 包,放在上述目录,并新建一个空白文件 (./storage/.download-complete),启动脚本会跳过下载。

  4. 使用 ComfyUI-Manager 即可更新组件、安装模型(在 ComfyUI 页面中找到“Manager”)。

运行前提

  • NVIDIA 显卡, ≥6GB 显存

  • 安装好最新的 NVIDIA 显卡驱动

    • 游戏驱动或 Studio 驱动均可。

    • 只需要在宿主系统中安装驱动即可,容器中不需要再安装驱动。

  • 安装好 Docker

  • 科学上网

    • 访问 GitHub(下载自定义节点)与 HuggingFace、Civitai(下载模型)大概率需要科学上网,访问 PyPI(安装依赖项)也可能需要加速。

    • Docker Desktop 用户可在设置中找到“代理”(Settings - Resources - Proxies)选项页。

    • Linux 用户可以使用 预启动脚本

运行方法 - NVIDIA 显卡

方法 A 使用 docker run
mkdir -p storage

docker run -it \
  --name comfyui \
  --gpus all \
  -p 8188:8188 \
  -v "$(pwd)"/storage:/home/runner \
  -e CLI_ARGS="" \
  yanwk/comfyui-boot:latest
# 更新镜像(仅在 Python 组件版本过期时需要)
docker rm comfyui
docker pull yanwk/comfyui-boot:latest
# 接下来再运行一遍上述 'docker run' 即可
方法 B 使用 docker compose
git clone https://github.com/YanWenKun/ComfyUI-Docker.git

cd ComfyUI-Docker/cu121

docker compose up --detach
# 更新镜像(仅在 Python 组件版本过期时需要)
git pull
docker compose pull
docker compose up --detach --remove-orphans
docker image prune

启动完成后,访问 http://localhost:8188/

CLI_ARGS

启动参数 说明

--lowvram

如果显存只有 4G

--novram

如果用了 --lowvram 还是显存不够,直接改用 CPU 内存

--cpu

用 CPU 来跑,会很慢

--use-pytorch-cross-attention

如果不想用 xFormers,而改用 PyTorch 原生交叉注意力机制。在 WSL2 上可能会有更好的速度/显存占用表现,但在 Linux 宿主机上会明显更慢。

--preview-method taesd

使用基于 TAESD 的高质量实时预览。使用 Manager 会覆盖该参数(需在 Manager 界面中设置预览方式)。

--front-end-version Comfy-Org/ComfyUI_frontend@latest

使用最新的 ComfyUI 前端

--fast

使用实验性的高性能模式,对 40 系显卡 + CUDA 12.4 + 最新 PyTorch + fp8-e4m3fn 模型可达 40% 性能提升。但也有可能造成图像质量劣化。 来源

更多 CLI_ARGS 参考 ComfyUI

预启动脚本

如果需要在 ComfyUI 启动前执行脚本,可以创建这个文件:

./storage/scripts/pre-start.sh

网络代理脚本

如果你需要单独设置代理,可以创建这个文件,它会在 pre-startdownload 之前运行:

./storage/scripts/set-proxy.sh
参考脚本内容:

提示:在容器内,不能直接通过 127.0.0.1 访问宿主机,需要走(虚拟)局域网,而容器平台一般都贴心绑定好了宿主机的 IP 地址-主机名:

  • 在 Docker 中是 host.docker.internal

  • 在 Podman 中是 host.containers.internal

#!/bin/bash
set -eu
export HTTP_PROXY=http://host.docker.internal:1081
export HTTPS_PROXY=$HTTP_PROXY
export http_proxy=$HTTP_PROXY
export https_proxy=$HTTP_PROXY
export NO_PROXY="localhost,*.local,*.internal,[::1],fd00::/7,
10.0.0.0/8,127.0.0.0/8,169.254.0.0/16,172.16.0.0/12,192.168.0.0/16,
10.*,127.*,169.254.*,172.16.*,172.17.*,172.18.*,172.19.*,172.20.*,
172.21.*,172.22.*,172.23.*,172.24.*,172.25.*,172.26.*,172.27.*,
172.28.*,172.29.*,172.30.*,172.31.*,172.32.*,192.168.*,
*.cn,ghproxy.com,*.ghproxy.com,ghproxy.org,*.ghproxy.org,
gh-proxy.com,*.gh-proxy.com,ghproxy.net,*.ghproxy.net"
export no_proxy=$NO_PROXY
echo "[INFO] 代理设置为 $HTTP_PROXY"

一些自定义节点

以下命令会安装一些常用节点,也许能帮你节省点时间

镜像里已经安装好了绝大部分依赖项,不需要手动安装。

cd ComfyUI/custom_nodes/

gcs='git clone --depth=1 --no-tags --recurse-submodules --shallow-submodules'

# 工作空间
$gcs https://github.com/11cafe/comfyui-workspace-manager.git
$gcs https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation.git
$gcs https://github.com/crystian/ComfyUI-Crystools-save.git
$gcs https://github.com/crystian/ComfyUI-Crystools.git

# 综合
$gcs https://github.com/bash-j/mikey_nodes.git
$gcs https://github.com/chrisgoringe/cg-use-everywhere.git
$gcs https://github.com/cubiq/ComfyUI_essentials.git
$gcs https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes.git
$gcs https://github.com/jags111/efficiency-nodes-comfyui.git
$gcs https://github.com/kijai/ComfyUI-KJNodes.git
$gcs https://github.com/pythongosssss/ComfyUI-Custom-Scripts.git
$gcs https://github.com/rgthree/rgthree-comfy.git
$gcs https://github.com/shiimizu/ComfyUI_smZNodes.git
$gcs https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes.git

# 控制
$gcs https://github.com/cubiq/ComfyUI_InstantID.git
$gcs https://github.com/cubiq/ComfyUI_IPAdapter_plus.git
$gcs https://github.com/Fannovel16/comfyui_controlnet_aux.git
$gcs https://github.com/florestefano1975/comfyui-portrait-master.git
$gcs https://github.com/Gourieff/comfyui-reactor-node.git
$gcs https://github.com/huchenlei/ComfyUI-layerdiffuse.git
$gcs https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet.git
$gcs https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
$gcs https://github.com/ltdrdata/ComfyUI-Inspire-Pack.git
$gcs https://github.com/mcmonkeyprojects/sd-dynamic-thresholding.git
$gcs https://github.com/storyicon/comfyui_segment_anything.git
$gcs https://github.com/twri/sdxl_prompt_styler.git

# 视频
$gcs https://github.com/Fannovel16/ComfyUI-Frame-Interpolation.git
$gcs https://github.com/FizzleDorf/ComfyUI_FizzNodes.git
$gcs https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved.git
$gcs https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
$gcs https://github.com/melMass/comfy_mtb.git
$gcs https://github.com/MrForExample/ComfyUI-AnimateAnyone-Evolved.git

# 更多
$gcs https://github.com/cubiq/ComfyUI_FaceAnalysis.git
$gcs https://github.com/pythongosssss/ComfyUI-WD14-Tagger.git
$gcs https://github.com/SLAPaper/ComfyUI-Image-Selector.git
$gcs https://github.com/ssitu/ComfyUI_UltimateSDUpscale.git

如果不同节点间出现冲突,尝试在 custom_nodes 下删除对应节点,并删除 .local (或 local)目录,然后在 ComfyUI-Manager 中更新/尝试修复/重新安装对应节点。

一些方便 Debug 的命令

构建镜像,打印所有日志(不折叠)
docker build . --progress=plain -f Dockerfile -t yanwk/comfyui-boot:latest
运行一个一次性容器
docker run -it --rm \
  --gpus all -p 8188:8188 \
  --volume "$(pwd)"/storage:/home/runner \
  --env CLI_ARGS="" \
  yanwk/comfyui-boot:latest
用 root 身份运行 bash
docker run -it --rm \
  --gpus all -p 8188:8188 \
  --volume "$(pwd)"/storage:/home/runner \
  --env CLI_ARGS="" \
  --user root \
  yanwk/comfyui-boot:latest /bin/bash
清理缓存文件

如果在升级时遇到奇怪问题,可以尝试清理缓存文件。平时不需要清理,避免反复下载一些文件(尤其一些节点用 huggingface_hub 下载模型,会存在 .cache 中)。

docker exec -it --workdir /home/runner  comfyui \
  rm -rf .cache/ .config/ .local/ .nv/ bin/ include/ lib/ lib64 pyvenv.cfg

docker restart comfyui