Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 83 additions & 31 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,57 @@
x-base_service: &base_service
ports:
- "${WEBUI_PORT:-7860}:7860"
volumes:
- &v1 ./data:/data
- &v2 ./output:/output
stop_signal: SIGKILL
tty: true
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0']
capabilities: [compute, utility]
# Base configurations
x-common: &common
ports:
- "${WEBUI_PORT:-7860}:7860"
volumes:
- &v1 ./data:/data
- &v2 ./output:/output
stop_signal: SIGKILL
tty: true

# Device configurations
x-cuda: &cuda
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0']
capabilities: [compute, utility]

x-rocm: &rocm
devices:
- /dev/kfd
- /dev/dri
security_opt:
- seccomp=unconfined
group_add:
- video
deploy:
# resources:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i had to uncomment this to run the profile

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!

reservations:
devices:
- driver: amd
capabilities: [gpu]
environment:
- ROCm_VERSION=6.4
- HIP_VISIBLE_DEVICES=0
- HSA_OVERRIDE_GFX_VERSION=11.0.0

x-cpu: &cpu
deploy: {}

# CLI arguments
x-auto-args: &auto_args
CLI_ARGS: --allow-code --medvram --xformers --enable-insecure-extension-access --api

x-auto-cpu-args: &auto_cpu_args
CLI_ARGS: --no-half --precision full --allow-code --enable-insecure-extension-access --api

x-comfy-args: &comfy_args
CLI_ARGS: ""

x-comfy-cpu-args: &comfy_cpu_args
CLI_ARGS: --cpu

name: webui-docker

Expand All @@ -23,33 +62,46 @@ services:
volumes:
- *v1

auto: &automatic
<<: *base_service
profiles: ["auto"]
# AUTOMATIC1111 services
auto-cuda:
<<: [*common, *cuda]
profiles: ["auto-cuda"]
build: ./services/AUTOMATIC1111
image: sd-auto:78
image: sd-auto:79
environment:
<<: *auto_args

auto-rocm:
<<: [*common, *rocm]
profiles: ["auto-rocm"]
build:
context: ./services/AUTOMATIC1111
dockerfile: Dockerfile-rocm
image: sd-auto-rocm:79
environment:
- CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api
<<: *auto_args

auto-cpu:
<<: *automatic
<<: [*common, *cpu]
profiles: ["auto-cpu"]
deploy: {}
build: ./services/AUTOMATIC1111
image: sd-auto-cpu:79
environment:
- CLI_ARGS=--no-half --precision full --allow-code --enable-insecure-extension-access --api
<<: *auto_cpu_args

comfy: &comfy
<<: *base_service
profiles: ["comfy"]
# ComfyUI services
comfy-cuda:
<<: [*common, *cuda]
profiles: ["comfy-cuda"]
build: ./services/comfy/
image: sd-comfy:7
environment:
- CLI_ARGS=

<<: *comfy_args

comfy-cpu:
<<: *comfy
<<: [*common, *cpu]
profiles: ["comfy-cpu"]
deploy: {}
build: ./services/comfy/
image: sd-comfy-cpu:7
environment:
- CLI_ARGS=--cpu
<<: *comfy_cpu_args
10 changes: 5 additions & 5 deletions services/AUTOMATIC1111/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM alpine/git:2.36.2 as download
FROM alpine/git:2.49.1 AS download

COPY clone.sh /clone.sh

Expand All @@ -14,7 +14,7 @@ RUN . /clone.sh generative-models https://github.com/Stability-AI/generative-mod
RUN . /clone.sh stable-diffusion-webui-assets https://github.com/AUTOMATIC1111/stable-diffusion-webui-assets 6f7db241d2f8ba7457bac5ca9753331f0c266917


FROM pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime
FROM pytorch/pytorch:2.5.1-cuda12.1-cudnn9-runtime

ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1

Expand All @@ -30,7 +30,7 @@ WORKDIR /
RUN --mount=type=cache,target=/root/.cache/pip \
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git && \
cd stable-diffusion-webui && \
git reset --hard v1.9.4 && \
git reset --hard v1.10.1 && \
pip install -r requirements_versions.txt


Expand All @@ -55,8 +55,8 @@ COPY . /docker
RUN \
# mv ${ROOT}/style.css ${ROOT}/user.css && \
# one of the ugliest hacks I ever wrote \
sed -i 's/in_app_dir = .*/in_app_dir = True/g' /opt/conda/lib/python3.10/site-packages/gradio/routes.py && \
git config --global --add safe.directory '*'
find /opt -name "routes.py" -path "*/gradio/*" -exec sed -i 's/in_app_dir = .*/in_app_dir = True/g' {} \; 2>/dev/null || true && \
git config --global --add safe.directory '*' || true

WORKDIR ${ROOT}
ENV NVIDIA_VISIBLE_DEVICES=all
Expand Down
79 changes: 79 additions & 0 deletions services/AUTOMATIC1111/Dockerfile-rocm
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
FROM alpine/git:2.49.1 AS download

COPY clone.sh /clone.sh

RUN . /clone.sh stable-diffusion-webui-assets https://github.com/AUTOMATIC1111/stable-diffusion-webui-assets.git 6f7db241d2f8ba7457bac5ca9753331f0c266917

RUN . /clone.sh stable-diffusion-stability-ai https://github.com/Stability-AI/stablediffusion.git cf1d67a6fd5ea1aa600c4df58e5b47da45f6bdbf \
&& rm -rf assets data/**/*.png data/**/*.jpg data/**/*.gif

RUN . /clone.sh BLIP https://github.com/salesforce/BLIP.git 48211a1594f1321b00f14c9f7a5b4813144b2fb9
RUN . /clone.sh k-diffusion https://github.com/crowsonkb/k-diffusion.git ab527a9a6d347f364e3d185ba6d714e22d80cb3c
RUN . /clone.sh clip-interrogator https://github.com/pharmapsychotic/clip-interrogator 2cf03aaf6e704197fd0dae7c7f96aa59cf1b11c9
RUN . /clone.sh generative-models https://github.com/Stability-AI/generative-models 45c443b316737a4ab6e40413d7794a7f5657c19f
RUN . /clone.sh stable-diffusion-webui-assets https://github.com/AUTOMATIC1111/stable-diffusion-webui-assets 6f7db241d2f8ba7457bac5ca9753331f0c266917


FROM rocm/pytorch:rocm6.4.3_ubuntu24.04_py3.12_pytorch_release_2.6.0

ENV DEBIAN_FRONTEND=noninteractive PIP_PREFER_BINARY=1

RUN --mount=type=cache,target=/var/cache/apt \
apt-get update && \
# we need those
apt-get install -y fonts-dejavu-core rsync git jq moreutils aria2 \
# extensions needs those
ffmpeg libglfw3-dev libgles2-mesa-dev pkg-config libcairo2 libcairo2-dev build-essential libssl-dev \
# build-from-source toolchain for py3.12-only wheels like tokenizers (curl for rustup)
rustc cargo curl ca-certificates && \
update-ca-certificates

# Install a recent Rust toolchain (Cargo/rustc) that supports edition2024 crates needed by tokenizers deps
RUN curl -sSf https://sh.rustup.rs | sh -s -- -y \
&& /root/.cargo/bin/rustup toolchain install stable \
&& /root/.cargo/bin/rustup default stable \
&& /root/.cargo/bin/rustc --version \
&& /root/.cargo/bin/cargo --version

ENV PATH=/root/.cargo/bin:${PATH}
ENV RUSTFLAGS="-A invalid_reference_casting"


WORKDIR /
RUN --mount=type=cache,target=/root/.cache/pip \
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git && \
cd stable-diffusion-webui && \
git reset --hard v1.10.1 && \
python -m pip install --upgrade pip setuptools wheel && \
pip install -r requirements_versions.txt


ENV ROOT=/stable-diffusion-webui

COPY --from=download /repositories/ ${ROOT}/repositories/
RUN mkdir ${ROOT}/interrogate && cp ${ROOT}/repositories/clip-interrogator/clip_interrogator/data/* ${ROOT}/interrogate

RUN --mount=type=cache,target=/root/.cache/pip \
pip install pyngrok xformers==0.0.26.post1 \
git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379 \
git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 \
git+https://github.com/mlfoundations/[email protected]

# there seems to be a memory leak (or maybe just memory not being freed fast enough) that is fixed by this version of malloc
# maybe move this up to the dependencies list.
RUN apt-get -y install libgoogle-perftools-dev && apt-get clean
ENV LD_PRELOAD=libtcmalloc.so

COPY . /docker

RUN \
# mv ${ROOT}/style.css ${ROOT}/user.css && \
# one of the ugliest hacks I ever wrote \
find /opt -name "routes.py" -path "*/gradio/*" -exec sed -i 's/in_app_dir = .*/in_app_dir = True/g' {} \; 2>/dev/null || true && \
git config --global --add safe.directory '*' || true

WORKDIR ${ROOT}
ENV CLI_ARGS=""
EXPOSE 7860
ENTRYPOINT ["/docker/entrypoint.sh"]
CMD python -u webui.py --listen --port 7860 ${CLI_ARGS}
2 changes: 1 addition & 1 deletion services/download/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM bash:alpine3.19
FROM bash:alpine3.22

RUN apk update && apk add parallel aria2
COPY . /docker
Expand Down