mirror of
https://github.com/AbdBarho/stable-diffusion-webui-docker.git
synced 2025-10-28 00:34:34 -04:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2efaeb41cd | ||
|
|
56b942237e | ||
|
|
7b8bc3d74a | ||
|
|
445f3f8bac | ||
|
|
076b5747d3 | ||
|
|
2a0de025e2 |
1
.github/pull_request_template.md
vendored
1
.github/pull_request_template.md
vendored
@@ -11,3 +11,4 @@ Closes issue #
|
|||||||
- auto: https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/
|
- auto: https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/
|
||||||
- sygil: https://github.com/Sygil-Dev/sygil-webui/commit/
|
- sygil: https://github.com/Sygil-Dev/sygil-webui/commit/
|
||||||
- invoke: https://github.com/invoke-ai/InvokeAI/commit/
|
- invoke: https://github.com/invoke-ai/InvokeAI/commit/
|
||||||
|
- comfy: https://github.com/comfyanonymous/ComfyUI/commit/
|
||||||
|
|||||||
1
.github/workflows/docker.yml
vendored
1
.github/workflows/docker.yml
vendored
@@ -16,6 +16,7 @@ jobs:
|
|||||||
- auto
|
- auto
|
||||||
- sygil
|
- sygil
|
||||||
- invoke
|
- invoke
|
||||||
|
- comfy
|
||||||
- download
|
- download
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: ${{ matrix.profile }}
|
name: ${{ matrix.profile }}
|
||||||
|
|||||||
@@ -34,6 +34,14 @@ This repository provides multiple UIs for you to play around with stable diffusi
|
|||||||
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
||||||
|  |  |  |
|
|  |  |  |
|
||||||
|
|
||||||
|
### [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
|
||||||
|
|
||||||
|
[Full feature list here](https://github.com/comfyanonymous/ComfyUI#features), Screenshot:
|
||||||
|
|
||||||
|
| Workflow |
|
||||||
|
| -------------------------------------------------------------------------------- |
|
||||||
|
|  |
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are welcome! **Create a discussion first of what the problem is and what you want to contribute (before you implement anything)**
|
Contributions are welcome! **Create a discussion first of what the problem is and what you want to contribute (before you implement anything)**
|
||||||
@@ -51,5 +59,6 @@ Special thanks to everyone behind these awesome projects, without them, none of
|
|||||||
- [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
|
- [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
|
||||||
- [InvokeAI](https://github.com/invoke-ai/InvokeAI)
|
- [InvokeAI](https://github.com/invoke-ai/InvokeAI)
|
||||||
- [Sygil-webui](https://github.com/Sygil-Dev/sygil-webui)
|
- [Sygil-webui](https://github.com/Sygil-Dev/sygil-webui)
|
||||||
|
- [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
|
||||||
- [CompVis/stable-diffusion](https://github.com/CompVis/stable-diffusion)
|
- [CompVis/stable-diffusion](https://github.com/CompVis/stable-diffusion)
|
||||||
- and many many more.
|
- and many many more.
|
||||||
|
|||||||
2
data/.gitignore
vendored
2
data/.gitignore
vendored
@@ -22,3 +22,5 @@
|
|||||||
/Lora
|
/Lora
|
||||||
/ControlNet
|
/ControlNet
|
||||||
/openpose
|
/openpose
|
||||||
|
/ModelScope
|
||||||
|
/LyCORIS
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ services:
|
|||||||
<<: *base_service
|
<<: *base_service
|
||||||
profiles: ["auto"]
|
profiles: ["auto"]
|
||||||
build: ./services/AUTOMATIC1111
|
build: ./services/AUTOMATIC1111
|
||||||
image: sd-auto:51
|
image: sd-auto:54
|
||||||
environment:
|
environment:
|
||||||
- CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api
|
- CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api
|
||||||
|
|
||||||
@@ -48,7 +48,6 @@ services:
|
|||||||
- PRELOAD=true
|
- PRELOAD=true
|
||||||
- CLI_ARGS=--no-nsfw_checker --no-safety_checker --xformers
|
- CLI_ARGS=--no-nsfw_checker --no-safety_checker --xformers
|
||||||
|
|
||||||
|
|
||||||
sygil: &sygil
|
sygil: &sygil
|
||||||
<<: *base_service
|
<<: *base_service
|
||||||
profiles: ["sygil"]
|
profiles: ["sygil"]
|
||||||
@@ -63,3 +62,20 @@ services:
|
|||||||
profiles: ["sygil-sl"]
|
profiles: ["sygil-sl"]
|
||||||
environment:
|
environment:
|
||||||
- USE_STREAMLIT=1
|
- USE_STREAMLIT=1
|
||||||
|
|
||||||
|
comfy: &comfy
|
||||||
|
<<: *base_service
|
||||||
|
profiles: ["comfy"]
|
||||||
|
build: ./services/comfy/
|
||||||
|
image: sd-comfy:1
|
||||||
|
tty: true
|
||||||
|
environment:
|
||||||
|
- CLI_ARGS=
|
||||||
|
|
||||||
|
|
||||||
|
comfy-cpu:
|
||||||
|
<<: *comfy
|
||||||
|
profiles: ["comfy-cpu"]
|
||||||
|
deploy: {}
|
||||||
|
environment:
|
||||||
|
- CLI_ARGS=--cpu
|
||||||
|
|||||||
@@ -24,8 +24,9 @@ FROM python:3.10.9-slim
|
|||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1
|
ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/root/.cache/pip \
|
RUN --mount=type=cache,target=/root/.cache/pip pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117
|
||||||
pip install torch==1.13.1+cu117 torchvision --extra-index-url https://download.pytorch.org/whl/cu117
|
|
||||||
|
# RUN --mount=type=cache,target=/root/.cache/pip pip install torch==2.0.0+cu118 torchvision --extra-index-url https://download.pytorch.org/whl/cu117
|
||||||
|
|
||||||
RUN apt-get update && apt install fonts-dejavu-core rsync git jq moreutils -y && apt-get clean
|
RUN apt-get update && apt install fonts-dejavu-core rsync git jq moreutils -y && apt-get clean
|
||||||
|
|
||||||
@@ -61,7 +62,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \
|
|||||||
RUN apt-get -y install libgoogle-perftools-dev && apt-get clean
|
RUN apt-get -y install libgoogle-perftools-dev && apt-get clean
|
||||||
ENV LD_PRELOAD=libtcmalloc.so
|
ENV LD_PRELOAD=libtcmalloc.so
|
||||||
|
|
||||||
ARG SHA=a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
|
ARG SHA=5ab7f213bec2f816f9c5644becb32eb72c8ffb89
|
||||||
RUN --mount=type=cache,target=/root/.cache/pip \
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
cd stable-diffusion-webui && \
|
cd stable-diffusion-webui && \
|
||||||
git fetch && \
|
git fetch && \
|
||||||
@@ -76,7 +77,8 @@ RUN \
|
|||||||
python3 /docker/info.py ${ROOT}/modules/ui.py && \
|
python3 /docker/info.py ${ROOT}/modules/ui.py && \
|
||||||
mv ${ROOT}/style.css ${ROOT}/user.css && \
|
mv ${ROOT}/style.css ${ROOT}/user.css && \
|
||||||
# one of the ugliest hacks I ever wrote \
|
# one of the ugliest hacks I ever wrote \
|
||||||
sed -i 's/in_app_dir = .*/in_app_dir = True/g' /usr/local/lib/python3.10/site-packages/gradio/routes.py
|
sed -i 's/in_app_dir = .*/in_app_dir = True/g' /usr/local/lib/python3.10/site-packages/gradio/routes.py && \
|
||||||
|
git config --global --add safe.directory '*'
|
||||||
|
|
||||||
WORKDIR ${ROOT}
|
WORKDIR ${ROOT}
|
||||||
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility
|
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility
|
||||||
|
|||||||
@@ -15,6 +15,10 @@ if [ ! -f /data/config/auto/ui-config.json ]; then
|
|||||||
echo '{}' >/data/config/auto/ui-config.json
|
echo '{}' >/data/config/auto/ui-config.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ ! -f /data/config/auto/styles.csv ]; then
|
||||||
|
touch /data/config/auto/styles.csv
|
||||||
|
fi
|
||||||
|
|
||||||
declare -A MOUNTS
|
declare -A MOUNTS
|
||||||
|
|
||||||
MOUNTS["/root/.cache"]="/data/.cache"
|
MOUNTS["/root/.cache"]="/data/.cache"
|
||||||
@@ -35,12 +39,15 @@ MOUNTS["${ROOT}/models/torch_deepdanbooru"]="/data/Deepdanbooru"
|
|||||||
MOUNTS["${ROOT}/models/BLIP"]="/data/BLIP"
|
MOUNTS["${ROOT}/models/BLIP"]="/data/BLIP"
|
||||||
MOUNTS["${ROOT}/models/midas"]="/data/MiDaS"
|
MOUNTS["${ROOT}/models/midas"]="/data/MiDaS"
|
||||||
MOUNTS["${ROOT}/models/Lora"]="/data/Lora"
|
MOUNTS["${ROOT}/models/Lora"]="/data/Lora"
|
||||||
|
MOUNTS["${ROOT}/models/LyCORIS"]="/data/LyCORIS"
|
||||||
MOUNTS["${ROOT}/models/ControlNet"]="/data/ControlNet"
|
MOUNTS["${ROOT}/models/ControlNet"]="/data/ControlNet"
|
||||||
MOUNTS["${ROOT}/models/openpose"]="/data/openpose"
|
MOUNTS["${ROOT}/models/openpose"]="/data/openpose"
|
||||||
|
MOUNTS["${ROOT}/models/ModelScope"]="/data/ModelScope"
|
||||||
|
|
||||||
MOUNTS["${ROOT}/embeddings"]="/data/embeddings"
|
MOUNTS["${ROOT}/embeddings"]="/data/embeddings"
|
||||||
MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json"
|
MOUNTS["${ROOT}/config.json"]="/data/config/auto/config.json"
|
||||||
MOUNTS["${ROOT}/ui-config.json"]="/data/config/auto/ui-config.json"
|
MOUNTS["${ROOT}/ui-config.json"]="/data/config/auto/ui-config.json"
|
||||||
|
MOUNTS["${ROOT}/styles.csv"]="/data/config/auto/styles.csv"
|
||||||
MOUNTS["${ROOT}/extensions"]="/data/config/auto/extensions"
|
MOUNTS["${ROOT}/extensions"]="/data/config/auto/extensions"
|
||||||
|
|
||||||
# extra hacks
|
# extra hacks
|
||||||
|
|||||||
44
services/comfy/Dockerfile
Normal file
44
services/comfy/Dockerfile
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
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/5.0.0/xformers-0.0.17.dev449-cp310-cp310-manylinux2014_x86_64.whl'
|
||||||
|
|
||||||
|
|
||||||
|
FROM python:3.10.9-slim
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip pip install torch==1.13.1 torchvision --extra-index-url https://download.pytorch.org/whl/cu117
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y git && apt-get clean
|
||||||
|
|
||||||
|
ENV ROOT=/stable-diffusion
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
git clone https://github.com/comfyanonymous/ComfyUI.git ${ROOT} && \
|
||||||
|
cd ${ROOT} && \
|
||||||
|
git checkout master && \
|
||||||
|
git reset --hard 884ea653c8d6fe19b3724f45a04a0d74cd881f2f && \
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
--mount=type=bind,from=xformers,source=/wheel.whl,target=/xformers-0.0.17-cp310-cp310-linux_x86_64.whl \
|
||||||
|
pip install triton /xformers-0.0.17-cp310-cp310-linux_x86_64.whl
|
||||||
|
|
||||||
|
|
||||||
|
WORKDIR ${ROOT}
|
||||||
|
|
||||||
|
ARG BRANCH=master SHA=884ea653c8d6fe19b3724f45a04a0d74cd881f2f
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
|
git fetch && \
|
||||||
|
git checkout ${BRANCH} && \
|
||||||
|
git reset --hard ${SHA} && \
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# add info
|
||||||
|
COPY . /docker/
|
||||||
|
|
||||||
|
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility NVIDIA_VISIBLE_DEVICES=all
|
||||||
|
ENV PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS=""
|
||||||
|
EXPOSE 7860
|
||||||
|
ENTRYPOINT ["/docker/entrypoint.sh"]
|
||||||
|
CMD python -u main.py --listen --port 7860 ${CLI_ARGS}
|
||||||
47
services/comfy/entrypoint.sh
Executable file
47
services/comfy/entrypoint.sh
Executable file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
declare -A MOUNTS
|
||||||
|
|
||||||
|
|
||||||
|
mkdir -vp /data/config/comfy/
|
||||||
|
|
||||||
|
# cache
|
||||||
|
MOUNTS["/root/.cache"]=/data/.cache
|
||||||
|
# ui specific
|
||||||
|
MOUNTS["${ROOT}/models/checkpoints"]="/data/StableDiffusion"
|
||||||
|
MOUNTS["${ROOT}/models/controlnet"]="/data/ControlNet"
|
||||||
|
MOUNTS["${ROOT}/models/upscale_models/RealESRGAN"]="/data/RealESRGAN"
|
||||||
|
MOUNTS["${ROOT}/models/upscale_models/GFPGAN"]="/data/GFPGAN"
|
||||||
|
MOUNTS["${ROOT}/models/upscale_models/SwinIR"]="/data/SwinIR"
|
||||||
|
MOUNTS["${ROOT}/models/vae"]="/data/VAE"
|
||||||
|
|
||||||
|
# data
|
||||||
|
MOUNTS["${ROOT}/models/loras"]="/data/Lora"
|
||||||
|
MOUNTS["${ROOT}/models/embeddings"]="/data/embeddings"
|
||||||
|
|
||||||
|
# config
|
||||||
|
# TODO: I am not sure if this is final, maybe it should change in the future
|
||||||
|
MOUNTS["${ROOT}/models/clip"]="/data/.cache/comfy/clip"
|
||||||
|
MOUNTS["${ROOT}/models/clip_vision"]="/data/.cache/comfy/clip_vision"
|
||||||
|
MOUNTS["${ROOT}/models/custom_nodes"]="/data/config/comfy/custom_nodes"
|
||||||
|
MOUNTS["${ROOT}/models/style_models"]="/data/config/comfy/style_models"
|
||||||
|
MOUNTS["${ROOT}/models/t2i_adapter"]="/data/config/comfy/t2i_adapter"
|
||||||
|
|
||||||
|
# output
|
||||||
|
MOUNTS["${ROOT}/output"]="/output/comfy"
|
||||||
|
|
||||||
|
for to_path in "${!MOUNTS[@]}"; do
|
||||||
|
set -Eeuo pipefail
|
||||||
|
from_path="${MOUNTS[${to_path}]}"
|
||||||
|
rm -rf "${to_path}"
|
||||||
|
if [ ! -f "$from_path" ]; then
|
||||||
|
mkdir -vp "$from_path"
|
||||||
|
fi
|
||||||
|
mkdir -vp "$(dirname "${to_path}")"
|
||||||
|
ln -sT "${from_path}" "${to_path}"
|
||||||
|
echo Mounted $(basename "${from_path}")
|
||||||
|
done
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
# TODO: maybe just use the .gitignore file to create all of these
|
# TODO: maybe just use the .gitignore file to create all of these
|
||||||
mkdir -vp /data/.cache /data/StableDiffusion /data/Codeformer /data/GFPGAN /data/ESRGAN /data/BSRGAN /data/RealESRGAN /data/SwinIR /data/LDSR /data/ScuNET /data/embeddings /data/VAE /data/Deepdanbooru /data/MiDaS /data/Lora /data/ControlNet /data/openpose
|
mkdir -vp /data/.cache /data/StableDiffusion /data/LyCORIS /data/Codeformer /data/ModelScope /data/GFPGAN /data/ESRGAN /data/BSRGAN /data/RealESRGAN /data/SwinIR /data/LDSR /data/ScuNET /data/embeddings /data/VAE /data/Deepdanbooru /data/MiDaS /data/Lora /data/ControlNet /data/openpose
|
||||||
|
|
||||||
echo "Downloading, this might take a while..."
|
echo "Downloading, this might take a while..."
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user