Dockerfile 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # syntax=docker/dockerfile:1
  2. FROM alpine/git:2.36.2 as download
  3. SHELL ["/bin/sh", "-ceuxo", "pipefail"]
  4. RUN <<EOF
  5. cat <<'EOE' > /clone.sh
  6. mkdir -p repositories/"$1" && cd repositories/"$1" && git init && git remote add origin "$2" && git fetch origin "$3" --depth=1 && git reset --hard "$3" && rm -rf .git
  7. EOE
  8. EOF
  9. RUN . /clone.sh taming-transformers https://github.com/CompVis/taming-transformers.git 24268930bf1dce879235a7fddd0b2355b84d7ea6 \
  10. && rm -rf data assets **/*.ipynb
  11. RUN . /clone.sh stable-diffusion https://github.com/CompVis/stable-diffusion.git 69ae4b35e0a0f6ee1af8bb9a5d0016ccb27e36dc \
  12. && rm -rf assets data/**/*.png data/**/*.jpg data/**/*.gif
  13. RUN . /clone.sh CodeFormer https://github.com/sczhou/CodeFormer.git c5b4593074ba6214284d6acd5f1719b6c5d739af \
  14. && rm -rf assets inputs
  15. RUN . /clone.sh BLIP https://github.com/salesforce/BLIP.git 48211a1594f1321b00f14c9f7a5b4813144b2fb9
  16. RUN . /clone.sh k-diffusion https://github.com/crowsonkb/k-diffusion.git 60e5042ca0da89c14d1dd59d73883280f8fce991
  17. RUN . /clone.sh clip-interrogator https://github.com/pharmapsychotic/clip-interrogator 2486589f24165c8e3b303f84e9dbbea318df83e8
  18. FROM alpine:3 as xformers
  19. RUN apk add aria2
  20. RUN aria2c --dir / --out wheel.whl 'https://github.com/AbdBarho/stable-diffusion-webui-docker/releases/download/2.1.0/xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl'
  21. FROM python:3.10-slim
  22. SHELL ["/bin/bash", "-ceuxo", "pipefail"]
  23. ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1 PIP_NO_CACHE_DIR=1
  24. RUN pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
  25. RUN apt-get update && apt install fonts-dejavu-core rsync git jq moreutils -y && apt-get clean
  26. RUN <<EOF
  27. git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
  28. cd stable-diffusion-webui
  29. git reset --hard d885a4a57b72152745ca76192ef1bdda29e6461d
  30. pip install -r requirements_versions.txt
  31. EOF
  32. COPY --from=xformers /wheel.whl xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl
  33. RUN pip install xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl && rm xformers-0.0.14.dev0-cp310-cp310-linux_x86_64.whl
  34. ENV ROOT=/stable-diffusion-webui
  35. COPY --from=download /git/ ${ROOT}
  36. RUN mkdir ${ROOT}/interrogate && cp ${ROOT}/repositories/clip-interrogator/data/* ${ROOT}/interrogate
  37. RUN pip install --prefer-binary --no-cache-dir -r ${ROOT}/repositories/CodeFormer/requirements.txt
  38. ARG DEEPDANBOORU="0"
  39. RUN [[ "${DEEPDANBOORU:-0}" == "0" ]] && : || pip install tensorflow-cpu==2.10 tensorflow-io==0.27.0 git+https://github.com/KichangKim/DeepDanbooru.git@edf73df4cdaeea2cf00e9ac08bd8a9026b7a7b26#egg=deepdanbooru
  40. # Note: don't update the sha of previous versions because the install will take forever
  41. # instead, update the repo state in a later step
  42. ARG SHA=ac085628540d0ec6a988fad93f5b8f2154209571
  43. RUN <<EOF
  44. cd stable-diffusion-webui
  45. git fetch
  46. git reset --hard ${SHA}
  47. pip install -r requirements_versions.txt
  48. EOF
  49. RUN pip install opencv-python-headless \
  50. git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379 \
  51. git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 \
  52. pyngrok
  53. COPY . /docker
  54. RUN <<EOF
  55. python3 /docker/info.py ${ROOT}/modules/ui.py
  56. mv ${ROOT}/style.css ${ROOT}/user.css
  57. sed -i 's/os.rename(tmpdir, target_dir)/shutil.move(tmpdir,target_dir)/' ${ROOT}/modules/ui_extensions.py
  58. EOF
  59. WORKDIR ${ROOT}/repositories/stable-diffusion
  60. ENV CLI_ARGS=""
  61. EXPOSE 7860
  62. ENTRYPOINT ["/docker/entrypoint.sh"]
  63. # run, -u to not buffer stdout / stderr
  64. CMD python3 -u ../../webui.py --listen --port 7860 --ckpt-dir ${ROOT}/models/Stable-diffusion ${CLI_ARGS}