mirror of
				https://github.com/AbdBarho/stable-diffusion-webui-docker.git
				synced 2025-11-03 18:53:14 -05:00 
			
		
		
		
	Compare commits
	
		
			8 Commits
		
	
	
		
			master
			...
			c6b7d2f79a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					c6b7d2f79a | ||
| 
						 | 
					dfe8078b1b | ||
| 
						 | 
					3fe1785653 | ||
| 
						 | 
					685ae21d57 | ||
| 
						 | 
					ee10e058cc | ||
| 
						 | 
					0f3187505b | ||
| 
						 | 
					25d8d0c008 | ||
| 
						 | 
					6a0366cf45 | 
@@ -1,19 +1,92 @@
 | 
				
			|||||||
FROM pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime
 | 
					FROM pytorch/pytorch:2.3.1-cuda12.1-cudnn8-runtime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1
 | 
					# Limited system user UID
 | 
				
			||||||
 | 
					ARG USE_UID=991
 | 
				
			||||||
 | 
					# Limited system user GID
 | 
				
			||||||
 | 
					ARG USE_GID=991
 | 
				
			||||||
 | 
					# Latest tag or bleeding edge commit
 | 
				
			||||||
 | 
					ARG USE_EDGE=false
 | 
				
			||||||
 | 
					# ComfyUI-GGUF
 | 
				
			||||||
 | 
					ARG USE_GGUF=false
 | 
				
			||||||
 | 
					# x-flux-comfyui
 | 
				
			||||||
 | 
					ARG USE_XFLUX=false
 | 
				
			||||||
 | 
					# comfyui_controlnet_aux
 | 
				
			||||||
 | 
					ARG USE_CNAUX=false
 | 
				
			||||||
 | 
					# krita-ai-diffusion
 | 
				
			||||||
 | 
					ARG USE_KRITA=false
 | 
				
			||||||
 | 
					# ComfyUI_IPAdapter_plus
 | 
				
			||||||
 | 
					ARG USE_IPAPLUS=false
 | 
				
			||||||
 | 
					# comfyui-inpaint-nodes
 | 
				
			||||||
 | 
					ARG USE_INPAINT=false
 | 
				
			||||||
 | 
					# comfyui-tooling-nodes
 | 
				
			||||||
 | 
					ARG USE_TOOLING=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN apt-get update && apt-get install -y git && apt-get clean
 | 
					ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 USE_EDGE=$USE_EDGE
 | 
				
			||||||
 | 
					ENV USE_GGUF=$USE_GGUF USE_XFLUX=$USE_XFLUX ROOT=/stable-diffusion
 | 
				
			||||||
 | 
					ENV CACHE=/home/app/.cache USE_CNAUX=$USE_CNAUX USE_KRITA=$USE_KRITA
 | 
				
			||||||
 | 
					ENV USE_IPAPLUS=$USE_IPAPLUS USE_INPAINT=$USE_INPAINT USE_TOOLING=$USE_TOOLING
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ENV ROOT=/stable-diffusion
 | 
					# User/Group
 | 
				
			||||||
RUN --mount=type=cache,target=/root/.cache/pip \
 | 
					RUN groupadd -r app -g ${USE_GID} && useradd --no-log-init -m -r -g app app -u ${USE_UID} && \
 | 
				
			||||||
 | 
					  mkdir -p ${ROOT} && chown ${USE_UID}:${USE_GID} ${ROOT} && mkdir -p ${CACHE}/pip && chown -R ${USE_UID}:${USE_GID} ${CACHE}
 | 
				
			||||||
 | 
					RUN --mount=type=cache,uid=${USE_UID},gid=${USE_GID},target=${CACHE} chown -R ${USE_UID}:${USE_UID} ${CACHE}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN apt-get update && apt-get install -y git && (if [ "${USE_XFLUX}" = "true" ] || [ "${USE_KRITA}" = "true" ] || [ "${USE_CNAUX}" = "true" ]; then apt-get install -y libgl1-mesa-glx python3-opencv; fi) && apt-get clean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					USER app:app
 | 
				
			||||||
 | 
					ENV PATH="${PATH}:/home/app/.local/bin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN --mount=type=cache,uid=${USE_UID},gid=${USE_GID},target=${CACHE} pip --cache-dir=${CACHE}/pip install -U pip
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN --mount=type=cache,uid=${USE_UID},gid=${USE_GID},target=${CACHE} \
 | 
				
			||||||
  git clone https://github.com/comfyanonymous/ComfyUI.git ${ROOT} && \
 | 
					  git clone https://github.com/comfyanonymous/ComfyUI.git ${ROOT} && \
 | 
				
			||||||
  cd ${ROOT} && \
 | 
					  cd ${ROOT} && \
 | 
				
			||||||
  git checkout master && \
 | 
					  git checkout master && \
 | 
				
			||||||
  git reset --hard 276f8fce9f5a80b500947fb5745a4dde9e84622d && \
 | 
					  bash -c 'VERSION=$(git describe --tags --abbrev=0) && \
 | 
				
			||||||
  pip install -r requirements.txt
 | 
					  if [ "${USE_EDGE}" = "true" ]; then VERSION=$(git describe --abbrev=7); fi && \
 | 
				
			||||||
 | 
					  git reset --hard ${VERSION}' && \
 | 
				
			||||||
 | 
					  pip --cache-dir=${CACHE}/pip install -r requirements.txt && \
 | 
				
			||||||
 | 
					  if [ "${USE_KRITA}" = "true" ]; then \
 | 
				
			||||||
 | 
					    pip --cache-dir=${CACHE}/pip install aiohttp tqdm && \
 | 
				
			||||||
 | 
					    git clone https://github.com/Acly/krita-ai-diffusion.git && \
 | 
				
			||||||
 | 
					    cd krita-ai-diffusion && git checkout main && \
 | 
				
			||||||
 | 
					    git submodule update --init && cd ..; \
 | 
				
			||||||
 | 
					    export USE_CNAUX="true" USE_IPAPLUS="true" \
 | 
				
			||||||
 | 
					    USE_INPAINT="true" USE_TOOLING="true"; \
 | 
				
			||||||
 | 
					  fi; \
 | 
				
			||||||
 | 
					  if [ "${USE_GGUF}" = "true" ]; then \
 | 
				
			||||||
 | 
					    git clone https://github.com/city96/ComfyUI-GGUF.git && \
 | 
				
			||||||
 | 
					    cd ComfyUI-GGUF && git checkout main && \
 | 
				
			||||||
 | 
					    pip --cache-dir=${CACHE}/pip install -r requirements.txt && cd ..; \
 | 
				
			||||||
 | 
					  fi; \
 | 
				
			||||||
 | 
					  if [ "${USE_XFLUX}" = "true" ]; then \
 | 
				
			||||||
 | 
					    git clone https://github.com/XLabs-AI/x-flux-comfyui.git && \
 | 
				
			||||||
 | 
					    cd x-flux-comfyui && git checkout main && \
 | 
				
			||||||
 | 
					    pip --cache-dir=${CACHE}/pip install -r requirements.txt && cd ..; \
 | 
				
			||||||
 | 
					  fi; \
 | 
				
			||||||
 | 
					  if [ "${USE_CNAUX}" = "true" ]; then \
 | 
				
			||||||
 | 
					    git clone https://github.com/Fannovel16/comfyui_controlnet_aux.git && \
 | 
				
			||||||
 | 
					    cd comfyui_controlnet_aux && git checkout main && \
 | 
				
			||||||
 | 
					    pip --cache-dir=${CACHE}/pip install -r requirements.txt && \
 | 
				
			||||||
 | 
					    # This extra step to separate onnxruntime installation is required to restore onnx cuda support \
 | 
				
			||||||
 | 
					    pip --cache-dir=${CACHE}/pip install onnxruntime && pip --cache-dir=${CACHE}/pip install onnxruntime-gpu && cd ..; \
 | 
				
			||||||
 | 
					  fi; \
 | 
				
			||||||
 | 
					  if [ "${USE_IPAPLUS}" = "true" ]; then \
 | 
				
			||||||
 | 
					    git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus.git && \
 | 
				
			||||||
 | 
					    cd ComfyUI_IPAdapter_plus && git checkout main && cd ..; \
 | 
				
			||||||
 | 
					  fi; \
 | 
				
			||||||
 | 
					  if [ "${USE_INPAINT}" = "true" ]; then \
 | 
				
			||||||
 | 
					    git clone https://github.com/Acly/comfyui-inpaint-nodes.git && \
 | 
				
			||||||
 | 
					    cd comfyui-inpaint-nodes && git checkout main && \
 | 
				
			||||||
 | 
					    pip --cache-dir=${CACHE}/pip install opencv-python && cd ..; \
 | 
				
			||||||
 | 
					  fi; \
 | 
				
			||||||
 | 
					  if [ "${USE_TOOLING}" = "true" ]; then \
 | 
				
			||||||
 | 
					    git clone https://github.com/Acly/comfyui-tooling-nodes.git && \
 | 
				
			||||||
 | 
					    cd comfyui-tooling-nodes && git checkout main && cd ..; \
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
WORKDIR ${ROOT}
 | 
					WORKDIR ${ROOT}
 | 
				
			||||||
COPY . /docker/
 | 
					COPY --chown=${USE_UID}:${USE_GID} . /docker/
 | 
				
			||||||
RUN chmod u+x /docker/entrypoint.sh && cp /docker/extra_model_paths.yaml ${ROOT}
 | 
					RUN chmod u+x /docker/entrypoint.sh && cp /docker/extra_model_paths.yaml ${ROOT}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ENV NVIDIA_VISIBLE_DEVICES=all PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS=""
 | 
					ENV NVIDIA_VISIBLE_DEVICES=all PYTHONPATH="${PYTHONPATH}:${PWD}" CLI_ARGS=""
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,11 +2,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set -Eeuo pipefail
 | 
					set -Eeuo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mkdir -vp /data/config/comfy/custom_nodes
 | 
					CUSTOM_NODES="/data/config/comfy/custom_nodes"
 | 
				
			||||||
 | 
					mkdir -vp "${CUSTOM_NODES}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
declare -A MOUNTS
 | 
					declare -A MOUNTS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MOUNTS["/root/.cache"]="/data/.cache"
 | 
					MOUNTS["${CACHE}"]="/data/.cache"
 | 
				
			||||||
MOUNTS["${ROOT}/input"]="/data/config/comfy/input"
 | 
					MOUNTS["${ROOT}/input"]="/data/config/comfy/input"
 | 
				
			||||||
MOUNTS["${ROOT}/output"]="/output/comfy"
 | 
					MOUNTS["${ROOT}/output"]="/output/comfy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -22,6 +23,47 @@ for to_path in "${!MOUNTS[@]}"; do
 | 
				
			|||||||
  echo Mounted $(basename "${from_path}")
 | 
					  echo Mounted $(basename "${from_path}")
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "${USE_KRITA}" = "true" ]; then
 | 
				
			||||||
 | 
					  if [ "${KRITA_DOWNLOAD_MODELS:-false}" = "true" ]; then
 | 
				
			||||||
 | 
					    cd "${ROOT}/krita-ai-diffusion/scripts" && python download_models.py --recommended /data && cd ..
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  [ -d "${ROOT}/models/upscale_models" ] && mv -v "${ROOT}/models/upscale_models" "${ROOT}/models/upscale_models.stock"
 | 
				
			||||||
 | 
					  if [ ! -L "${ROOT}/models/upscale_models" ]; then
 | 
				
			||||||
 | 
					    cd "${ROOT}/models"
 | 
				
			||||||
 | 
					    ln -sfT /data/models/upscale_models upscale_models
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  export USE_CNAUX="true" USE_IPAPLUS="true" USE_INPAINT="true"; USE_TOOLING="true"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ "${USE_GGUF}" = "true" ]; then
 | 
				
			||||||
 | 
					  [ ! -e "${CUSTOM_NODES}/ComfyUI-GGUF" ] && mv "${ROOT}/ComfyUI-GGUF" "${CUSTOM_NODES}"/
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ "${USE_XFLUX}" = "true" ]; then
 | 
				
			||||||
 | 
					  [ ! -e "${CUSTOM_NODES}/x-flux-comfyui" ] && mv "${ROOT}/x-flux-comfyui" "${CUSTOM_NODES}"/
 | 
				
			||||||
 | 
					  [ ! -e "/data/models/clip_vision" ] && mkdir -p /data/models/clip_vision
 | 
				
			||||||
 | 
					  [ ! -e "/data/models/clip_vision/model.safetensors" ] && cd /data/models/clip_vision && \
 | 
				
			||||||
 | 
					    python -c 'import sys; from urllib.request import urlopen; from pathlib import Path; Path(sys.argv[2]).write_bytes(urlopen("".join([sys.argv[1],sys.argv[2]])).read())' \
 | 
				
			||||||
 | 
					    "https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/" "model.safetensors"
 | 
				
			||||||
 | 
					  [ ! -e "/data/models/xlabs" ] && mkdir -p /data/models/xlabs/{ipadapters,loras,controlnets}
 | 
				
			||||||
 | 
					  [ ! -e "/data/models/xlabs/ipadapters/flux-ip-adapter.safetensors" ] && cd /data/models/xlabs/ipadapters && \
 | 
				
			||||||
 | 
					    python -c 'import sys; from urllib.request import urlopen; from pathlib import Path; Path(sys.argv[2]).write_bytes(urlopen("".join([sys.argv[1],sys.argv[2]])).read())' \
 | 
				
			||||||
 | 
					    "https://huggingface.co/XLabs-AI/flux-ip-adapter/resolve/main/" "flux-ip-adapter.safetensors"
 | 
				
			||||||
 | 
					  [ -d "${ROOT}/models/xlabs" ] && rm -rf "${ROOT}/models/xlabs"
 | 
				
			||||||
 | 
					  [ ! -e "${ROOT}/models/xlabs" ] && cd "${ROOT}/models" && ln -sT /data/models/xlabs xlabs && cd ..
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ "${USE_CNAUX}" = "true" ]; then
 | 
				
			||||||
 | 
					  [ ! -e "${CUSTOM_NODES}/comfyui_controlnet_aux" ] && mv "${ROOT}/comfyui_controlnet_aux" "${CUSTOM_NODES}"/
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ "${USE_IPAPLUS}" = "true" ]; then
 | 
				
			||||||
 | 
					  [ ! -e "${CUSTOM_NODES}/ComfyUI_IPAdapter_plus" ] && mv "${ROOT}/ComfyUI_IPAdapter_plus" "${CUSTOM_NODES}"/
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ "${USE_INPAINT}" = "true" ]; then
 | 
				
			||||||
 | 
					  [ ! -e "${CUSTOM_NODES}/comfyui-inpaint-nodes" ] && mv "${ROOT}/comfyui-inpaint-nodes" "${CUSTOM_NODES}"/
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					if [ "${USE_TOOLING}" = "true" ]; then
 | 
				
			||||||
 | 
					  [ ! -e "${CUSTOM_NODES}/comfyui-tooling-nodes" ] && mv "${ROOT}/comfyui-tooling-nodes" "${CUSTOM_NODES}"/
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -f "/data/config/comfy/startup.sh" ]; then
 | 
					if [ -f "/data/config/comfy/startup.sh" ]; then
 | 
				
			||||||
  pushd ${ROOT}
 | 
					  pushd ${ROOT}
 | 
				
			||||||
  . /data/config/comfy/startup.sh
 | 
					  . /data/config/comfy/startup.sh
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,11 +15,15 @@ a111:
 | 
				
			|||||||
  gligen: models/GLIGEN
 | 
					  gligen: models/GLIGEN
 | 
				
			||||||
  clip: models/CLIPEncoder
 | 
					  clip: models/CLIPEncoder
 | 
				
			||||||
  embeddings: embeddings
 | 
					  embeddings: embeddings
 | 
				
			||||||
 | 
					  unet: models/unet
 | 
				
			||||||
 | 
					  clip_vision: models/clip_vision
 | 
				
			||||||
 | 
					  xlabs: models/xlabs
 | 
				
			||||||
 | 
					  inpaint: models/inpaint
 | 
				
			||||||
 | 
					  ipadapter: models/ipadapter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  custom_nodes: config/comfy/custom_nodes
 | 
					  custom_nodes: config/comfy/custom_nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # TODO: I am unsure about these, need more testing
 | 
					  # TODO: I am unsure about these, need more testing
 | 
				
			||||||
  # style_models: config/comfy/style_models
 | 
					  # style_models: config/comfy/style_models
 | 
				
			||||||
  # t2i_adapter: config/comfy/t2i_adapter
 | 
					  # t2i_adapter: config/comfy/t2i_adapter
 | 
				
			||||||
  # clip_vision: config/comfy/clip_vision
 | 
					 | 
				
			||||||
  # diffusers: config/comfy/diffusers
 | 
					  # diffusers: config/comfy/diffusers
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user