From a67265d8720bd9b4eafce9bb612eb18fb6801633 Mon Sep 17 00:00:00 2001 From: Paul Lamb Date: Sat, 30 Dec 2023 15:23:59 -0800 Subject: [PATCH 1/7] Updates to ComfyUI for ComfyManager and other custom nodes --- services/comfy/Dockerfile | 11 ++++++++++- services/comfy/entrypoint.sh | 28 +++++++++++++++++++++++++++ services/comfy/extra_model_paths.yaml | 18 +++++++++++++++-- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/services/comfy/Dockerfile b/services/comfy/Dockerfile index 6d1f6ce6a..c96ab5f74 100644 --- a/services/comfy/Dockerfile +++ b/services/comfy/Dockerfile @@ -8,6 +8,15 @@ ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 RUN apt-get update && apt-get install -y git && apt-get clean +# add some packages for some custom nodes in comfyui +RUN apt-get install 'libglib2.0-0' -y +RUN apt-get update +RUN apt-get install 'libgl1-mesa-glx' -y +RUN apt-get install 'python-dev' -y + +# install pip package for codeformer face detection custom node +RUN pip install lpips + ENV ROOT=/stable-diffusion RUN --mount=type=cache,target=/root/.cache/pip \ git clone https://github.com/comfyanonymous/ComfyUI.git ${ROOT} && \ @@ -24,7 +33,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \ WORKDIR ${ROOT} -ARG BRANCH=master SHA=7e941f9f247f9b013a33c2e7d117466108414e99 +ARG BRANCH=master SHA=c97be4db91d4a249c19afdf88fa1cf3268544e45 RUN --mount=type=cache,target=/root/.cache/pip \ git fetch && \ git checkout ${BRANCH} && \ diff --git a/services/comfy/entrypoint.sh b/services/comfy/entrypoint.sh index b4299a717..e411fb5c9 100755 --- a/services/comfy/entrypoint.sh +++ b/services/comfy/entrypoint.sh @@ -10,6 +10,34 @@ MOUNTS["/root/.cache"]="/data/.cache" MOUNTS["${ROOT}/input"]="/data/config/comfy/input" MOUNTS["${ROOT}/output"]="/output/comfy" +# mount various locations for comfyui to keep custom nodes and models downloaded with comfyui manager +MOUNTS["${ROOT}/custom_nodes"]="/data/config/comfy/custom_nodes" + +MOUNTS["${ROOT}/models/checkpoints"]="/data/models/checkpoints" +#MOUNTS["${ROOT}/models/configs"]="/data/models/configs" +MOUNTS["${ROOT}/models/embeddings"]="/data/models/embeddings" +MOUNTS["${ROOT}/models/gligen"]="/data/models/gligen" +MOUNTS["${ROOT}/models/mmdets"]="/data/models/mmdets" +MOUNTS["${ROOT}/models/style_models"]="/data/models/style_models" +#MOUNTS["${ROOT}/models/vae"]="/data/models/vae" +#MOUNTS["${ROOT}/models/clip"]="/data/models/clip" +#MOUNTS["${ROOT}/models/controlnet"]="/data/models/controlnet" +MOUNTS["${ROOT}/models/facedetection"]="/data/models/facedetection" + +MOUNTS["${ROOT}/models/hypernetworks"]="/data/models/hypernetworks" + + +#MOUNTS["${ROOT}/models/onnx"]="/data/models/onnx" +#MOUNTS["${ROOT}/models/unet"]="/data/models/unet" +MOUNTS["${ROOT}/models/vae_approx"]="/data/models/vae-approx" +#MOUNTS["${ROOT}/models/clip_vision"]="/data/models/clip_vision" +#MOUNTS["${ROOT}/models/diffusers"]="/data/models/diffusers" +MOUNTS["${ROOT}/models/facerestore_models"]="/data/models/facerestore_models" +MOUNTS["${ROOT}/models/loras"]="/data/models/lora" +MOUNTS["${ROOT}/models/sams"]="/data/models/sams" +MOUNTS["${ROOT}/models/upscale_models"]="/data/models/upscale_models" + + for to_path in "${!MOUNTS[@]}"; do set -Eeuo pipefail from_path="${MOUNTS[${to_path}]}" diff --git a/services/comfy/extra_model_paths.yaml b/services/comfy/extra_model_paths.yaml index eb374eb30..c06cd46b6 100644 --- a/services/comfy/extra_model_paths.yaml +++ b/services/comfy/extra_model_paths.yaml @@ -4,7 +4,7 @@ a111: checkpoints: models/Stable-diffusion configs: models/Stable-diffusion vae: models/VAE - loras: models/Lora + #loras: models/Lora upscale_models: | models/RealESRGAN models/ESRGAN @@ -16,10 +16,24 @@ a111: clip: models/CLIPEncoder embeddings: embeddings - custom_nodes: config/comfy/custom_nodes + #custom_nodes: config/comfy/custom_nodes # TODO: I am unsure about these, need more testing # style_models: config/comfy/style_models # t2i_adapter: config/comfy/t2i_adapter # clip_vision: config/comfy/clip_vision # diffusers: config/comfy/diffusers + +# may not need these since I'm adding mounts instead + #facerestore_models: models/facerestore_models + #sams: models/sams + #unet: models/unet + #vae_approx: models/vae_approx + #face_restore: models/face_restore + #mmdets: models/mmdets + #style_models: models/style_models + #clip_vision: models/clip_vision + #diffusers: models/diffusers + #facedetection: models/facedetection + #onnx: models/onnx + #ultralytics: models/ultralytics \ No newline at end of file From 18fb90ea22aed7dc4b37465527d5ce37871a7bee Mon Sep 17 00:00:00 2001 From: Paul Lamb Date: Sat, 30 Dec 2023 20:34:47 -0800 Subject: [PATCH 2/7] First pass at getting Fooocus working --- docker-compose.yml | 8 ++++++ services/fooocus/Dockerfile | 48 ++++++++++++++++++++++++++++++++++ services/fooocus/config.txt | 12 +++++++++ services/fooocus/entrypoint.sh | 38 +++++++++++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 services/fooocus/Dockerfile create mode 100644 services/fooocus/config.txt create mode 100644 services/fooocus/entrypoint.sh diff --git a/docker-compose.yml b/docker-compose.yml index 93fba1dc5..a9a414706 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -71,3 +71,11 @@ services: deploy: {} environment: - CLI_ARGS=--cpu + + fooocus: &fooocus + <<: *base_service + profiles: ["fooocus"] + build: ./services/fooocus/ + image: sd-fooocus:3 + environment: + - CLI_ARGS= \ No newline at end of file diff --git a/services/fooocus/Dockerfile b/services/fooocus/Dockerfile new file mode 100644 index 000000000..5f6e1204c --- /dev/null +++ b/services/fooocus/Dockerfile @@ -0,0 +1,48 @@ +FROM alpine:3.17 as xformers +RUN apk add --no-cache aria2 +RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/6.0.0/xformers-0.0.21.dev544-cp310-cp310-manylinux2014_x86_64-pytorch201.whl' + +FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime + +ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 + +RUN apt-get update && apt-get install -y git && apt-get clean + +# add some packages for some custom nodes in comfyui +RUN apt-get install 'libglib2.0-0' -y +RUN apt-get update +RUN apt-get install 'libgl1-mesa-glx' -y +RUN apt-get install 'python-dev' -y + +ARG BRANCH=main SHA=8e62a72a63b30a3067d1a1bc3f8d226824bd9283 + +ENV ROOT=/stable-diffusion +RUN --mount=type=cache,target=/root/.cache/pip \ + git clone https://github.com/lllyasviel/Fooocus.git ${ROOT} && \ + cd ${ROOT} && \ + git checkout ${BRANCH} && \ + git reset --hard ${SHA} && \ + pip install -r requirements_versions.txt + + +RUN --mount=type=cache,target=/root/.cache/pip \ + --mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.21-cp310-cp310-linux_x86_64.whl \ + pip install /xformers-0.0.21-cp310-cp310-linux_x86_64.whl + +WORKDIR ${ROOT} + +RUN --mount=type=cache,target=/root/.cache/pip \ + git fetch && \ + git checkout ${BRANCH} && \ + git reset --hard ${SHA} && \ + pip install -r requirements_versions.txt + +# add info +COPY . /docker/ +RUN chmod u+x /docker/entrypoint.sh + +#ENV NVIDIA_VISIBLE_DEVICES=all +#ENV PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS="" +EXPOSE 7860 +ENTRYPOINT ["/docker/entrypoint.sh"] +CMD python -u entry_with_update.py --listen --port 7860 ${CLI_ARGS} diff --git a/services/fooocus/config.txt b/services/fooocus/config.txt new file mode 100644 index 000000000..ddced7180 --- /dev/null +++ b/services/fooocus/config.txt @@ -0,0 +1,12 @@ +{ + "path_checkpoints": "/stable-diffusion/models/checkpoints", + "path_loras": "/stable-diffusion/models/loras", + "path_embeddings": "/stable-diffusion/models/embeddings", + "path_vae_approx": "/stable-diffusion/models/vae_approx", + "path_upscale_models": "/stable-diffusion/models/upscale_models", + "path_inpaint": "/stable-diffusion/models/inpaint", + "path_controlnet": "/stable-diffusion/models/controlnet", + "path_clip_vision": "/stable-diffusion/models/clip_vision", + "path_fooocus_expansion": "/stable-diffusion/models/prompt_expansion/fooocus_expansion", + "path_outputs": "/stable-diffusion/outputs" +} \ No newline at end of file diff --git a/services/fooocus/entrypoint.sh b/services/fooocus/entrypoint.sh new file mode 100644 index 000000000..3cdc921b7 --- /dev/null +++ b/services/fooocus/entrypoint.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +set -Eeuo pipefail + +declare -A MOUNTS + +#mkdir -p ${CONFIG_DIR} ${ROOT}/configs/stable-diffusion/ + +# cache +#MOUNTS["/root/.cache"]=/data/.cache/ + +# this is really just a hack to avoid migrations +#rm -rf ${HF_HOME}/diffusers + +# ui specific +#MOUNTS["${ROOT}/models/codeformer"]=/data/models/Codeformer/ +#MOUNTS["${ROOT}/models/gfpgan/GFPGANv1.4.pth"]=/data/models/GFPGAN/GFPGANv1.4.pth +#MOUNTS["${ROOT}/models/gfpgan/weights"]=/data/models/GFPGAN/ +#MOUNTS["${ROOT}/models/realesrgan"]=/data/models/RealESRGAN/ +#MOUNTS["${ROOT}/models/ldm"]=/data/.cache/invoke/ldm/ + +# hacks + +for to_path in "${!MOUNTS[@]}"; do + set -Eeuo pipefail + from_path="${MOUNTS[${to_path}]}" + rm -rf "${to_path}" + mkdir -p "$(dirname "${to_path}")" + # ends with slash, make it! + if [[ "$from_path" == */ ]]; then + mkdir -vp "$from_path" + fi + + ln -sT "${from_path}" "${to_path}" + echo Mounted $(basename "${from_path}") +done + +exec "$@" From 77cfe4965ee3ccf40634f1be3486da640497c2ca Mon Sep 17 00:00:00 2001 From: Paul Lamb Date: Sat, 30 Dec 2023 22:20:58 -0800 Subject: [PATCH 3/7] Adding mount points to shared models --- services/fooocus/Dockerfile | 7 +++---- services/fooocus/entrypoint.sh | 24 ++++++++---------------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/services/fooocus/Dockerfile b/services/fooocus/Dockerfile index 5f6e1204c..7a1ff77f4 100644 --- a/services/fooocus/Dockerfile +++ b/services/fooocus/Dockerfile @@ -8,12 +8,12 @@ ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 RUN apt-get update && apt-get install -y git && apt-get clean -# add some packages for some custom nodes in comfyui +# add in required packages RUN apt-get install 'libglib2.0-0' -y -RUN apt-get update RUN apt-get install 'libgl1-mesa-glx' -y RUN apt-get install 'python-dev' -y +# set this to your target branch commit ARG BRANCH=main SHA=8e62a72a63b30a3067d1a1bc3f8d226824bd9283 ENV ROOT=/stable-diffusion @@ -39,10 +39,9 @@ RUN --mount=type=cache,target=/root/.cache/pip \ # add info COPY . /docker/ +RUN cp /docker/config.txt ${ROOT} RUN chmod u+x /docker/entrypoint.sh -#ENV NVIDIA_VISIBLE_DEVICES=all -#ENV PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS="" EXPOSE 7860 ENTRYPOINT ["/docker/entrypoint.sh"] CMD python -u entry_with_update.py --listen --port 7860 ${CLI_ARGS} diff --git a/services/fooocus/entrypoint.sh b/services/fooocus/entrypoint.sh index 3cdc921b7..ee1416ea1 100644 --- a/services/fooocus/entrypoint.sh +++ b/services/fooocus/entrypoint.sh @@ -4,22 +4,14 @@ set -Eeuo pipefail declare -A MOUNTS -#mkdir -p ${CONFIG_DIR} ${ROOT}/configs/stable-diffusion/ - -# cache -#MOUNTS["/root/.cache"]=/data/.cache/ - -# this is really just a hack to avoid migrations -#rm -rf ${HF_HOME}/diffusers - -# ui specific -#MOUNTS["${ROOT}/models/codeformer"]=/data/models/Codeformer/ -#MOUNTS["${ROOT}/models/gfpgan/GFPGANv1.4.pth"]=/data/models/GFPGAN/GFPGANv1.4.pth -#MOUNTS["${ROOT}/models/gfpgan/weights"]=/data/models/GFPGAN/ -#MOUNTS["${ROOT}/models/realesrgan"]=/data/models/RealESRGAN/ -#MOUNTS["${ROOT}/models/ldm"]=/data/.cache/invoke/ldm/ - -# hacks +MOUNTS["${ROOT}/outputs"]="/output/fooocus" + +# ui specific mounts +MOUNTS["${ROOT}/models/checkpoints"]=/data/models/Stable-diffusion/ +MOUNTS["${ROOT}/models/loras"]=/data/models/Lora/ +MOUNTS["${ROOT}/models/embeddings"]=/data/models/embeddings/ +MOUNTS["${ROOT}/models/vae_approx"]=/data/models/VAE/ +MOUNTS["${ROOT}/models/upscale_models"]=/data/models/upscale_models/ for to_path in "${!MOUNTS[@]}"; do set -Eeuo pipefail From 74813d56e7c3a1c517c9f21061de29668ce93bd4 Mon Sep 17 00:00:00 2001 From: Paul Lamb Date: Sun, 31 Dec 2023 14:32:26 -0800 Subject: [PATCH 4/7] Updated readme --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 95e10c302..a67bd9f0f 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,14 @@ This repository provides multiple UIs for you to play around with stable diffusi | -------------------------------------------------------------------------------- | | ![](https://github.com/comfyanonymous/ComfyUI/raw/master/comfyui_screenshot.png) | +### [Fooocus](https://github.com/comfyanonymous/ComfyUI) + +[Full feature list here](https://github.com/lllyasviel/Fooocus#fooocus), Screenshot: + +| Simplified UI | +| -------------------------------------------------------------------------------- | +| ![](https://github.com/lllyasviel/Fooocus/assets/19834515/483fb86d-c9a2-4c20-997c-46dafc124f25) | + ## Contributing Contributions are welcome! **Create a discussion first of what the problem is and what you want to contribute (before you implement anything)** From ff6e3d6fa87caa5cebaea89cefb3e8938c4cdaf8 Mon Sep 17 00:00:00 2001 From: Paul Lamb Date: Tue, 2 Jan 2024 00:17:55 -0800 Subject: [PATCH 5/7] Adding mount for wildcard functionality --- services/fooocus/entrypoint.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/fooocus/entrypoint.sh b/services/fooocus/entrypoint.sh index ee1416ea1..cc0fa75b7 100644 --- a/services/fooocus/entrypoint.sh +++ b/services/fooocus/entrypoint.sh @@ -2,6 +2,8 @@ set -Eeuo pipefail +mkdir -vp /data/config/fooocus/wildcards + declare -A MOUNTS MOUNTS["${ROOT}/outputs"]="/output/fooocus" @@ -12,6 +14,7 @@ MOUNTS["${ROOT}/models/loras"]=/data/models/Lora/ MOUNTS["${ROOT}/models/embeddings"]=/data/models/embeddings/ MOUNTS["${ROOT}/models/vae_approx"]=/data/models/VAE/ MOUNTS["${ROOT}/models/upscale_models"]=/data/models/upscale_models/ +MOUNTS["${ROOT}/wildcards"]=/data/config/fooocus/wildcards for to_path in "${!MOUNTS[@]}"; do set -Eeuo pipefail From cfc373d1d144f13adab8e095dd6e8f76c3cb951f Mon Sep 17 00:00:00 2001 From: Paul Lamb Date: Thu, 11 Apr 2024 16:44:12 -0700 Subject: [PATCH 6/7] Version bump, fooocus 2.3.1 --- services/fooocus/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/fooocus/Dockerfile b/services/fooocus/Dockerfile index 7a1ff77f4..1892f6b82 100644 --- a/services/fooocus/Dockerfile +++ b/services/fooocus/Dockerfile @@ -14,7 +14,7 @@ RUN apt-get install 'libgl1-mesa-glx' -y RUN apt-get install 'python-dev' -y # set this to your target branch commit -ARG BRANCH=main SHA=8e62a72a63b30a3067d1a1bc3f8d226824bd9283 +ARG BRANCH=main SHA=e2f9bcb11d06216d6800676c48d8d74d6fd77a4b ENV ROOT=/stable-diffusion RUN --mount=type=cache,target=/root/.cache/pip \ From 78ce234472869b64842fec0b5b6af444332a57c5 Mon Sep 17 00:00:00 2001 From: Paul Lamb Date: Tue, 15 Jul 2025 15:21:28 -0700 Subject: [PATCH 7/7] Bump foocus version --- services/fooocus/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/fooocus/Dockerfile b/services/fooocus/Dockerfile index 1892f6b82..fc7de59ee 100644 --- a/services/fooocus/Dockerfile +++ b/services/fooocus/Dockerfile @@ -14,7 +14,7 @@ RUN apt-get install 'libgl1-mesa-glx' -y RUN apt-get install 'python-dev' -y # set this to your target branch commit -ARG BRANCH=main SHA=e2f9bcb11d06216d6800676c48d8d74d6fd77a4b +ARG BRANCH=main SHA=d7439b2d6004d50a0fda19108603a8d1941a185e ENV ROOT=/stable-diffusion RUN --mount=type=cache,target=/root/.cache/pip \