1+ # syntax = docker/dockerfile:experimental
2+
3+ # # WebUI 基础镜像
4+ # # 包含 WebUI、相关依赖、插件、Lora、VAE
5+
6+ # ############################
7+ # clone repositories #
8+ # ############################
9+ FROM alpine/git:2.36.2 as repositories
10+
11+ COPY clone.sh /clone.sh
12+
13+ # RUN . /clone.sh taming-transformers https://github.com/CompVis/taming-transformers.git 3ba01b241669f5ade541ce990f7650a3b8f65318 \
14+ # && rm -rf data assets **/*.ipynb
15+
16+ RUN . /clone.sh stable-diffusion-stability-ai https://github.com/Stability-AI/stablediffusion.git cf1d67a6fd5ea1aa600c4df58e5b47da45f6bdbf \
17+ && rm -rf assets data/**/*.png data/**/*.jpg data/**/*.gif
18+
19+ RUN . /clone.sh generative-models https://github.com/Stability-AI/generative-models.git 5c10deee76adad0032b412294130090932317a87 \
20+ && rm -rf assets data/**/*.png data/**/*.jpg data/**/*.gif
21+
22+ RUN . /clone.sh CodeFormer https://github.com/sczhou/CodeFormer.git c5b4593074ba6214284d6acd5f1719b6c5d739af \
23+ && rm -rf assets inputs
24+
25+ RUN . /clone.sh BLIP https://github.com/salesforce/BLIP.git 48211a1594f1321b00f14c9f7a5b4813144b2fb9
26+ RUN . /clone.sh k-diffusion https://github.com/crowsonkb/k-diffusion.git c9fe758757e022f05ca5a53fa8fac28889e4f1cf
27+ RUN . /clone.sh clip-interrogator https://github.com/pharmapsychotic/clip-interrogator 2486589f24165c8e3b303f84e9dbbea318df83e8
28+
29+ # ############################
30+ # download xformers #
31+ # ############################
32+
33+ FROM alpine:3.17 as xformers
34+
35+ RUN apk add --no-cache aria2
36+ RUN aria2c -x 5 --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/5.0.3/xformers-0.0.20.dev528-cp310-cp310-manylinux2014_x86_64-pytorch2.whl'
37+
38+
39+ # #############################
40+ # # extension models d#
41+ # #############################
42+
43+ FROM python:3.10.9-slim as extensions
44+
45+ RUN --mount=type=cache,target=/root/.cache/pip \
46+ pip install transformers[sentencepiece] sentencepiece && \
47+ pip install torch==2.0.1 torchvision==0.15.2 --index-url https://download.pytorch.org/whl/cu118
48+
49+ COPY ./init /init
50+ RUN mkdir -p /sd-prompt-translator && python /init/sd-prompt-translator.py /sd-prompt-translator
51+ RUN mkdir -p /bert-base-uncased-cache && python /init/bert-base-uncased.py /bert-base-uncased-cache
52+ RUN mkdir -p /clip-vit-large-patch14 && python /init/clip-vit-large-patch14.py /clip-vit-large-patch14
53+ RUN mkdir -p /models--Bingsu--adetailer && python /init/bingsu-adetailer.py /models--Bingsu--adetailer
54+
55+ # #############################
56+ # # models #
57+ # #############################
158FROM alpine:3.17 as models
259
360RUN apk add --no-cache aria2
461
62+ RUN aria2c -x 8 --dir "/" --out "codeformer-v0.1.0.pth" "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth"
63+ RUN aria2c -x 8 --dir "/" --out "detection_Resnet50_Final.pth" "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth"
64+ RUN aria2c -x 8 --dir "/" --out "parsing_parsenet.pth" "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/parsing_parsenet.pth"
65+ RUN aria2c -x 8 --dir "/" --out "model_base_caption_capfilt_large.pth" "https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_caption_capfilt_large.pth"
66+ RUN aria2c -x 8 --dir "/" --out "model-resnet_custom_v3.pt" "https://github.com/AUTOMATIC1111/TorchDeepDanbooru/releases/download/v1/model-resnet_custom_v3.pt"
67+ RUN aria2c -x 8 --dir "/" --out "inswapper_128.onnx" "https://drive.google.com/u/0/uc?id=1krOLgjW2tAPaqV-Bw4YALz0xT5zlb5HF&export=download"
68+ RUN aria2c -x 8 --dir "/" --out "detector.onnx" "https://huggingface.co/s0md3v/nudity-checker/resolve/main/detector.onnx"
69+ RUN aria2c -x 8 --dir "/" --out "control_v11p_sd15_scribble.pth" "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.pth"
70+ RUN aria2c -x 8 --dir "/" --out "control_v11p_sd15_scribble.yaml" "https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.yaml"
71+ RUN aria2c -x 8 --dir "/" --out "control_v1p_sd15_illumination.safetensors" "https://huggingface.co/ioclab/ioc-controlnet/resolve/main/models/control_v1p_sd15_illumination.safetensors"
72+
73+
74+ # #############################
75+ # # dist #
76+ # #############################
77+
78+
79+ FROM python:3.10.9-slim as sd_base
80+
81+ ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1
82+
83+ RUN --mount=type=cache,target=/var/cache/apt \
84+ apt update && \
85+ apt install -y \
86+ wget git fonts-dejavu-core rsync git jq moreutils aria2 \
87+ ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev \
88+ libpython3.9-dev gcc g++ procps
89+
90+ ENV ROOT=/stable-diffusion-webui
91+
92+
93+ ENV SHA=v1.5.1
94+ RUN --mount=type=cache,target=/root/.cache/pip \
95+ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git /stable-diffusion-webui && \
96+ cd stable-diffusion-webui && \
97+ git reset --hard ${SHA} && \
98+ pip install -r requirements_versions.txt
99+
100+ COPY --from=repositories /repositories/ ${ROOT}/repositories/
101+
102+ # 其他必备的依赖
103+ RUN --mount=type=cache,target=/root/.cache/pip \
104+ find ${ROOT}/repositories -name requirements.txt | xargs -I {} pip install -r {} || echo "failed" && \
105+ pip install rich==13.4.2 numexpr matplotlib pandas av pims imageio_ffmpeg gdown mediapipe==0.10.2 \
106+ ultralytics==8.0.145 py-cpuinfo protobuf==3.20 rembg==2.0.38 \
107+ deepdanbooru onnxruntime-gpu jsonschema opencv_contrib_python opencv_python opencv_python_headless packaging Pillow tqdm \
108+ chardet PyExecJS lxml pathos cryptography openai aliyun-python-sdk-core aliyun-python-sdk-alimt send2trash \
109+ insightface==0.7.3 tensorflow ifnude && \
110+ pip install xformers==0.0.20 taming-transformers-rom1504 && \
111+ pip install torch==2.0.1 torchvision==0.15.2 --index-url https://download.pytorch.org/whl/cu118
112+
113+ # fix using lora in only api mode
114+ COPY ./fix.diff ${ROOT}/fix.diff
115+ RUN cd ${ROOT} && git apply --whitespace=fix fix.diff
116+
117+ # ==========================
118+
119+ FROM sd_base as base
120+
121+ ENV SD_BUILTIN=/built-in
122+ COPY ./sd-resource ${SD_BUILTIN}
123+ RUN cp -R ${ROOT}/scripts ${SD_BUILTIN}/scripts
124+
125+ # 中文提示词翻译 299M
126+ COPY --from=extensions /sd-prompt-translator ${SD_BUILTIN}/extensions/sd-prompt-translator/scripts/models
127+ # COPY --from=extensions /bert-base-uncased-cache/* ${SD_BUILTIN}/root/.cache/huggingface/hub/
128+
129+ # 启动的时候会下载这个
130+ COPY --from=extensions /clip-vit-large-patch14 ${SD_BUILTIN}/root/.cache/huggingface/hub/
131+
132+ # 面部修复 + 高分辨率修复 359M + 104M + 81.4M
133+ COPY --from=models /codeformer-v0.1.0.pth ${SD_BUILTIN}/models/Codeformer/codeformer-v0.1.0.pth
134+ COPY --from=models /detection_Resnet50_Final.pth ${SD_BUILTIN}/repositories/CodeFormer/weights/facelib/detection_Resnet50_Final.pth
135+ COPY --from=models /parsing_parsenet.pth ${SD_BUILTIN}/repositories/CodeFormer/weights/facelib/parsing_parsenet.pth
136+
137+ # CLIP 反向推导提示词 614M? 890M?
138+ # https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/10574
139+ # COPY --from=models /model_base_caption_capfilt_large.pth ${SD_BUILTIN}/models/BLIP/model_base_caption_capfilt_large.pth
140+
141+ # DeepBooru 反向推导提示词 614M
142+ COPY --from=models /model-resnet_custom_v3.pt ${SD_BUILTIN}/models/torch_deepdanbooru/model-resnet_custom_v3.pt
143+
144+ # roop 554M +
145+ COPY --from=models /inswapper_128.onnx ${SD_BUILTIN}/models/roop/inswapper_128.onnx
146+ COPY --from=models /detector.onnx ${SD_BUILTIN}/root/.ifnude/detector.onnx
147+
148+ # controlnet
149+ COPY --from=models /control_v11p_sd15_scribble.pth ${SD_BUILTIN}/models/ControlNet/control_v11p_sd15_scribble.pth
150+ COPY --from=models /control_v11p_sd15_scribble.yaml ${SD_BUILTIN}/models/ControlNet/control_v11p_sd15_scribble.yaml
151+ COPY --from=models /control_v1p_sd15_illumination.safetensors ${SD_BUILTIN}/models/ControlNet/control_v1p_sd15_illumination.safetensors
152+
153+ # adetailer
154+ COPY --from=extensions /models--Bingsu--adetailer ${SD_BUILTIN}/root/.cache/huggingface/hub/
155+
156+ COPY ./config.json /docker/config.json
157+ COPY ./entrypoint.sh /docker/entrypoint.sh
158+ COPY ./info.py /docker/info.py
159+ COPY --chmod=777 ./sd-agent /docker/sd-agent
160+
161+ ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility
162+ ENV NVIDIA_VISIBLE_DEVICES=all
163+
164+ WORKDIR ${ROOT}
165+
166+ EXPOSE 7860
167+ ENTRYPOINT ["/docker/entrypoint.sh" ]
168+
169+
170+ FROM alpine:3.17 as model-base-download
171+
172+ RUN apk add --no-cache aria2
173+
5174RUN aria2c -x 16 --dir "/" --out "sd-v1-5-inpainting.ckpt" "https://huggingface.co/runwayml/stable-diffusion-inpainting/resolve/main/sd-v1-5-inpainting.ckpt"
6175
7176RUN aria2c -x 16 --dir "/" --out "mixProV4.Cqhm.safetensors" "https://civitai.com/api/download/models/34559?type=Model&format=SafeTensor&size=full&fp=fp16"
8177
9- RUN aria2c -x 16 --dir "/" --out "chikmix_V2.safetensors" "https://civitai.com/api/download/models/59409?type=Model&format=SafeTensor&size=full&fp=fp32"
10178RUN aria2c -x 16 --dir "/" --out "ChinaDollLikeness.safetensors" "https://civitai.com/api/download/models/66172?type=Model&format=SafeTensor"
11179RUN aria2c -x 16 --dir "/" --out "KoreanDollLikeness.safetensors" "https://civitai.com/api/download/models/31284?type=Model&format=SafeTensor&size=full&fp=fp16"
12180RUN aria2c -x 16 --dir "/" --out "JapaneseDollLikeness.safetensors" "https://civitai.com/api/download/models/34562?type=Model&format=SafeTensor&size=full&fp=fp16"
@@ -22,47 +190,40 @@ RUN aria2c -x 16 --dir "/" --out "blingdbox_v1_mix.safetensors" "https://civitai
22190RUN aria2c -x 16 --dir "/" --out "GachaSpliash4.safetensors" "https://civitai.com/api/download/models/38884?type=Model&format=SafeTensor"
23191RUN aria2c -x 16 --dir "/" --out "Colorwater_v4.safetensors" "https://civitai.com/api/download/models/21173?type=Model&format=SafeTensor&size=full&fp=fp16"
24192
25- RUN aria2c -x 16 --dir "/" --out "sd_xl_base_1.0_0.9vae.safetensors" "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0_0.9vae.safetensors"
26- RUN aria2c -x 16 --dir "/" --out "sdxl_vae.safetensors" "https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors"
27-
28193
29- FROM registry.cn-hangzhou.aliyuncs.com/aliyun-fc/fc-stable-diffusion:basev4 as base
194+ FROM base as model- base
30195
31- COPY --from=models /cIF8Anime2.43ol.ckpt ${SD_BUILTIN}/models/VAE/cIF8Anime2.43ol.ckpt
196+ COPY --from=model-base-download /cIF8Anime2.43ol.ckpt ${SD_BUILTIN}/models/VAE/cIF8Anime2.43ol.ckpt
32197# COPY --from=models /vae-ft-mse-840000-ema-pruned.safetensors ${SD_BUILTIN}/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors
33198
34- COPY --from=models /moxin.safetensors ${SD_BUILTIN}/models/Lora/moxin.safetensors
35- COPY --from=models /milkingMachine_v11.safetensors ${SD_BUILTIN}/models/Lora/milkingMachine_v11.safetensors
36- COPY --from=models /blingdbox_v1_mix.safetensors ${SD_BUILTIN}/models/Lora/blingdbox_v1_mix.safetensors
37- COPY --from=models /GachaSpliash4.safetensors ${SD_BUILTIN}/models/Lora/GachaSpliash4.safetensors
38- COPY --from=models /Colorwater_v4.safetensors ${SD_BUILTIN}/models/Lora/Colorwater_v4.safetensors
199+ COPY --from=model-base-download /moxin.safetensors ${SD_BUILTIN}/models/Lora/moxin.safetensors
200+ COPY --from=model-base-download /milkingMachine_v11.safetensors ${SD_BUILTIN}/models/Lora/milkingMachine_v11.safetensors
201+ COPY --from=model-base-download /blingdbox_v1_mix.safetensors ${SD_BUILTIN}/models/Lora/blingdbox_v1_mix.safetensors
202+ COPY --from=model-base-download /GachaSpliash4.safetensors ${SD_BUILTIN}/models/Lora/GachaSpliash4.safetensors
203+ COPY --from=model-base-download /Colorwater_v4.safetensors ${SD_BUILTIN}/models/Lora/Colorwater_v4.safetensors
39204
40205RUN sed -i ${SD_BUILTIN}/ui-config.json -e 's@"txt2img/Prompt/value": ""@"txt2img/Prompt/value": "masterpiece, best quality, very detailed, extremely detailed beautiful, super detailed, tousled hair, illustration, dynamic angles, girly, fashion clothing, standing, mannequin, looking at viewer, interview, beach, beautiful detailed eyes, exquisitely beautiful face, floating, high saturation, beautiful and detailed light and shadow"@'
41206RUN sed -i ${SD_BUILTIN}/ui-config.json -e 's@"txt2img/Negative prompt/value": ""@"txt2img/Negative prompt/value": "loli,nsfw,logo,text,badhandv4,EasyNegative,ng_deepnegative_v1_75t,rev2-badprompt,verybadimagenegative_v1.3,negative_hand-neg,mutated hands and fingers,poorly drawn face,extra limb,missing limb,disconnected limbs,malformed hands,ugly"@'
42207
43- FROM base as sd1.5
208+ FROM model- base as sd1.5
44209
45- COPY --from=models /sd-v1-5-inpainting.ckpt ${SD_BUILTIN}/models/Stable-diffusion/sd-v1-5-inpainting.ckpt
46- COPY ./base/entrypoint.sh /docker/entrypoint.sh
210+ COPY --from=model-base-download /sd-v1-5-inpainting.ckpt ${SD_BUILTIN}/models/Stable-diffusion/sd-v1-5-inpainting.ckpt
47211
48212
49- FROM base as anime
213+ FROM model- base as anime
50214
51- COPY --from=models /mixProV4.Cqhm.safetensors ${SD_BUILTIN}/models/Stable-diffusion/mixProV4.Cqhm.safetensors
215+ COPY --from=model-base-download /mixProV4.Cqhm.safetensors ${SD_BUILTIN}/models/Stable-diffusion/mixProV4.Cqhm.safetensors
52216
53217RUN sed -i ${SD_BUILTIN}/config.json -e 's/sd-v1-5-inpainting.ckpt \[ c6bbc15e32\] /mixProV4.Cqhm.safetensors \[ 61e23e57ea\] /'
54218RUN sed -i ${SD_BUILTIN}/config.json -e 's/c6bbc15e3224e6973459ba78de4998b80b50112b0ae5b5c67113d56b4e366b19/61e23e57ea13765152435b42d55e7062de188ca3234edb82d751cf52f7667d4f/'
55219RUN sed -i ${SD_BUILTIN}/config.json -e 's/Automatic/cIF8Anime2.43ol.ckpt/'
56- COPY ./base/entrypoint.sh /docker/entrypoint.sh
57220
58- FROM base as realman
221+ FROM model- base as realman
59222
60- # COPY --from=models /chikmix_V2.safetensors ${SD_BUILTIN}/models/Stable-diffusion/chikmix_V2.safetensors
61- COPY --from=models /ChinaDollLikeness.safetensors ${SD_BUILTIN}/models/Lora/ChinaDollLikeness.safetensors
62- COPY --from=models /KoreanDollLikeness.safetensors ${SD_BUILTIN}/models/Lora/KoreanDollLikeness.safetensors
63- COPY --from=models /JapaneseDollLikeness.safetensors ${SD_BUILTIN}/models/Lora/JapaneseDollLikeness.safetensors
64- COPY --from=models /chilloutmix_NiPrunedFp16Fix.safetensors ${SD_BUILTIN}/models/Stable-diffusion/chilloutmix_NiPrunedFp16Fix.safetensors
223+ COPY --from=model-base-download /ChinaDollLikeness.safetensors ${SD_BUILTIN}/models/Lora/ChinaDollLikeness.safetensors
224+ COPY --from=model-base-download /KoreanDollLikeness.safetensors ${SD_BUILTIN}/models/Lora/KoreanDollLikeness.safetensors
225+ COPY --from=model-base-download /JapaneseDollLikeness.safetensors ${SD_BUILTIN}/models/Lora/JapaneseDollLikeness.safetensors
226+ COPY --from=model-base-download /chilloutmix_NiPrunedFp16Fix.safetensors ${SD_BUILTIN}/models/Stable-diffusion/chilloutmix_NiPrunedFp16Fix.safetensors
65227
66228RUN sed -i ${SD_BUILTIN}/config.json -e
'[email protected] \[ c6bbc15e32\] @chilloutmix_NiPrunedFp16Fix.safetensors \[ 59ffe2243a\] @' 67- RUN sed -i ${SD_BUILTIN}/config.json -e 's@c6bbc15e3224e6973459ba78de4998b80b50112b0ae5b5c67113d56b4e366b19@59ffe2243a25c9fe137d590eb3c5c3d3273f1b4c86252da11bbdc9568773da0c@'
68- COPY ./base/entrypoint.sh /docker/entrypoint.sh
229+ RUN sed -i ${SD_BUILTIN}/config.json -e 's@c6bbc15e3224e6973459ba78de4998b80b50112b0ae5b5c67113d56b4e366b19@59ffe2243a25c9fe137d590eb3c5c3d3273f1b4c86252da11bbdc9568773da0c@'
0 commit comments