Skip to content

Commit 97fb24c

Browse files
committed
ci: build an image that contains sd3 using docker bake
1 parent ba8c4c9 commit 97fb24c

File tree

3 files changed

+64
-13
lines changed

3 files changed

+64
-13
lines changed

.github/workflows/dev.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,16 @@ jobs:
4040
username: ${{ secrets.DOCKERHUB_USERNAME }}
4141
password: ${{ secrets.DOCKERHUB_TOKEN }}
4242

43-
- name: Set branch name as tag
43+
- name: Set branch name as RELEASE_VERSION
4444
id: get_tag
45-
run: echo "::set-output name=tag::${GITHUB_REF##*/}" | sed 's/\//-/g'
45+
run: echo "RELEASE_VERSION=${GITHUB_REF##refs/heads/}" | sed 's/\//-/g' >> $GITHUB_ENV
4646

47-
- name: Build and push
48-
uses: docker/build-push-action@v5
47+
- name: Build and push the images
48+
uses: docker/bake-action@v2
4949
with:
5050
push: true
51-
tags: |
52-
${{ secrets.DOCKERHUB_REPO }}/${{ secrets.DOCKERHUB_IMG }}:${{ steps.get_tag.outputs.tag }}
51+
targets: sd3
52+
args: |
53+
HUGGINGFACE_ACCESS_TOKEN=${{ secrets.HUGGINGFACE_ACCESS_TOKEN }}
54+
DOCKERHUB_REPO=${{ secrets.DOCKERHUB_REPO }}
55+
DOCKERHUB_IMG=${{ secrets.DOCKERHUB_IMG }}

Dockerfile

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Use Nvidia CUDA base image
1+
# Stage 1: Base image with common dependencies
22
FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 as base
33

44
# Prevents prompts from packages asking for user input during installation
@@ -24,12 +24,6 @@ RUN git clone https://github.com/comfyanonymous/ComfyUI.git /comfyui
2424
# Change working directory to ComfyUI
2525
WORKDIR /comfyui
2626

27-
ARG SKIP_DEFAULT_MODELS
28-
# Download checkpoints/vae/LoRA to include in image.
29-
RUN if [ -z "$SKIP_DEFAULT_MODELS" ]; then wget -O models/checkpoints/sd_xl_base_1.0.safetensors https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors; fi
30-
RUN if [ -z "$SKIP_DEFAULT_MODELS" ]; then wget -O models/vae/sdxl_vae.safetensors https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors; fi
31-
RUN if [ -z "$SKIP_DEFAULT_MODELS" ]; then wget -O models/vae/sdxl-vae-fp16-fix.safetensors https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/resolve/main/sdxl_vae.safetensors; fi
32-
3327
# Install ComfyUI dependencies
3428
RUN pip3 install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 \
3529
&& pip3 install --no-cache-dir xformers==0.0.21 \
@@ -48,5 +42,27 @@ WORKDIR /
4842
ADD src/start.sh src/rp_handler.py test_input.json ./
4943
RUN chmod +x /start.sh
5044

45+
# Stage 2: Final image with optional model weights
46+
FROM base as final
47+
48+
# Define build arguments
49+
ARG MODEL_TYPE
50+
ARG HUGGINGFACE_ACCESS_TOKEN
51+
52+
# Change working directory to ComfyUI
53+
WORKDIR /comfyui
54+
55+
# Download checkpoints/vae/LoRA to include in image based on model type
56+
RUN if [ "$MODEL_TYPE" = "sdxl" ]; then \
57+
wget -O models/checkpoints/sd_xl_base_1.0.safetensors https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors && \
58+
wget -O models/vae/sdxl_vae.safetensors https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors && \
59+
wget -O models/vae/sdxl-vae-fp16-fix.safetensors https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/resolve/main/sdxl_vae.safetensors; \
60+
elif [ "$MODEL_TYPE" = "sd3" ]; then \
61+
wget --header="Authorization: Bearer ${HUGGINGFACE_ACCESS_TOKEN}" -O models/checkpoints/sd3_medium_incl_clips_t5xxlfp8.safetensors https://huggingface.co/stabilityai/stable-diffusion-3-medium/resolve/main/sd3_medium_incl_clips_t5xxlfp8.safetensors; \
62+
fi
63+
64+
# Go back to the root
65+
WORKDIR /
66+
5167
# Start the container
5268
CMD /start.sh

docker-bake.hcl

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
group "default" {
2+
targets = ["base", "sdxl", "sd3"]
3+
}
4+
5+
target "base" {
6+
context = "."
7+
dockerfile = "Dockerfile"
8+
target = "base"
9+
tags = ["${DOCKERHUB_REPO}/${DOCKERHUB_IMG}:${RELEASE_VERSION}-base"]
10+
}
11+
12+
target "sdxl" {
13+
context = "."
14+
dockerfile = "Dockerfile"
15+
target = "final"
16+
args = {
17+
MODEL_TYPE = "sdxl"
18+
}
19+
tags = ["${DOCKERHUB_REPO}/${DOCKERHUB_IMG}:${RELEASE_VERSION}-sdxl"]
20+
inherits = ["base"]
21+
}
22+
23+
target "sd3" {
24+
context = "."
25+
dockerfile = "Dockerfile"
26+
target = "final"
27+
args = {
28+
MODEL_TYPE = "sd3"
29+
}
30+
tags = ["${DOCKERHUB_REPO}/${DOCKERHUB_IMG}:${RELEASE_VERSION}-sd3"]
31+
inherits = ["base"]
32+
}

0 commit comments

Comments
 (0)