create-venv.sh creates four virtual environments in the comfyui-build directory:

rocm7.1 (General ROCm 7.1)
gfx110X (RDNA 3 - RX 7000 series)
gfx1151 (RDNA 3.5 - Strix halo/Ryzen AI Max+ 365)
gfx120X (RDNA 4 - RX 9000 series)
build-comfyui-variants.sh automatically runs create-venv.sh first, then builds Docker images that copy the appropriate virtual environment based on the GPU_ARCH build argument.

Dockerfile simply copies the pre-built ComfyUI repository and the appropriate virtual environment, making builds much faster and more reliable.

This approach provides several benefits:

Faster builds: No more long pip installations in Docker
Better caching: Virtual environments are built once and reused
Consistency: Same environment across builds
Debugging: Easier to debug venv issues outside of Docker context
This commit is contained in:
John Doe
2025-11-23 13:41:04 -05:00
parent 41a71ab878
commit cbdd19fe4c
4 changed files with 93 additions and 64 deletions

View File

@@ -25,25 +25,17 @@ ENV LD_LIBRARY_PATH=/opt/rocm/lib:/opt/rocm/lib64:$LD_LIBRARY_PATH \
HSA_OVERRIDE_GFX_VERSION="${GPU_ARCH}" \
TORCH_USE_HIP_DSA=1
# Clone ComfyUI repository
# Copy ComfyUI repository and pre-built virtual environment
WORKDIR /app
RUN git clone https://github.com/comfyanonymous/ComfyUI
COPY ComfyUI /app/ComfyUI
# Copy the appropriate virtual environment based on GPU architecture
# The venv should be created by running create-venv.sh on the host
COPY ${GPU_ARCH} /app/ComfyUI/venv
# Set working directory to ComfyUI
WORKDIR /app/ComfyUI
# Create and activate virtual environment, then install dependencies
RUN python3 -m venv venv && \
. venv/bin/activate && \
pip install --upgrade pip && \
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then \
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}; \
else \
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}; \
fi && \
pip install -r requirements.txt && \
pip install opencv-python gguf
# Set environment to use the virtual environment and add ROCm runtime settings
ENV PATH="/app/ComfyUI/venv/bin:$PATH" \
VIRTUAL_ENV="/app/ComfyUI/venv" \

View File

@@ -114,13 +114,30 @@ else
exit 1
fi
cd ..
echo ""
echo -e "${BLUE}----------------------------------------${NC}"
echo ""
cd comfyui-build
print_step "Creating/updating virtual environment..."
echo -e "${YELLOW}Command: bash ./create-venv.sh${NC}"
if bash ./create-venv.sh; then
print_success "Virtual environment created/updated successfully"
else
print_error "Failed to create/update virtual environment"
exit 1
fi
echo ""
echo -e "${BLUE}----------------------------------------${NC}"
echo ""
print_step "Building ComfyUI variants for different GPU architectures..."
echo -e "${YELLOW}Command: bash ./comfyui-build/build-comfyui-variants.sh${NC}"
if bash ./comfyui-build/build-comfyui-variants.sh; then
echo -e "${YELLOW}Command: bash ./build-comfyui-variants.sh${NC}"
if bash ./build-comfyui-variants.sh; then
print_success "ComfyUI variants built successfully"
else
print_error "Failed to build ComfyUI variants"

View File

@@ -5,6 +5,19 @@
REGISTRY="docker.io/getterup"
Dockerfiles_DIR="./Dockerfiles"
echo "Building ComfyUI docker images for different AMD GPU architectures..."
# First, create the virtual environments using create-venv.sh
echo "Creating virtual environments for different GPU architectures..."
if [ -f "./comfyui-build/create-venv.sh" ]; then
cd comfyui-build
chmod +x create-venv.sh
./create-venv.sh
cd ..
else
echo "Error: create-venv.sh not found in ./comfyui-build/"
exit 1
fi
echo "Building ComfyUI docker images for different AMD GPU architectures..."
@@ -13,28 +26,28 @@ echo "Building ComfyUI with ROCm 7.1 (General)..."
docker build -t ${REGISTRY}/comfyui:rocm7.1 \
--build-arg PYTORCH_INDEX_URL="https://download.pytorch.org/whl/nightly/rocm7.1" \
--build-arg GPU_ARCH="rocm7.1" \
-f ${Dockerfiles_DIR}/Dockerfile.comfyui-rocm7.1 .
-f ${Dockerfiles_DIR}/Dockerfile.comfyui-rocm7.1 ./comfyui-build
# RDNA 3 (RX 7000 series)
echo "Building ComfyUI for RDNA 3 (RX 7000 series)..."
docker build -t ${REGISTRY}/comfyui:rdna3-gfx110x \
--build-arg PYTORCH_INDEX_URL="https://rocm.nightlies.amd.com/v2/gfx110X-dgpu/" \
--build-arg GPU_ARCH="gfx110X" \
-f ${Dockerfiles_DIR}/Dockerfile.comfyui-rocm7.1 .
-f ${Dockerfiles_DIR}/Dockerfile.comfyui-rocm7.1 ./comfyui-build
# RDNA 3.5 (Strix halo/Ryzen AI Max+ 365)
echo "Building ComfyUI for RDNA 3.5 (Strix halo/Ryzen AI Max+ 365)..."
docker build -t ${REGISTRY}/comfyui:rdna3.5-gfx1151 \
--build-arg PYTORCH_INDEX_URL="https://rocm.nightlies.amd.com/v2/gfx1151/" \
--build-arg GPU_ARCH="gfx1151" \
-f ${Dockerfiles_DIR}/Dockerfile.comfyui-rocm7.1 .
-f ${Dockerfiles_DIR}/Dockerfile.comfyui-rocm7.1 ./comfyui-build
# RDNA 4 (RX 9000 series)
echo "Building ComfyUI for RDNA 4 (RX 9000 series)..."
docker build -t ${REGISTRY}/comfyui:rdna4-gfx120x \
--build-arg PYTORCH_INDEX_URL="https://rocm.nightlies.amd.com/v2/gfx120X-all/" \
--build-arg GPU_ARCH="gfx120X" \
-f ${Dockerfiles_DIR}/Dockerfile.comfyui-rocm7.1 .
-f ${Dockerfiles_DIR}/Dockerfile.comfyui-rocm7.1 ./comfyui-build
echo "All ComfyUI builds completed!"
echo ""

View File

@@ -28,63 +28,70 @@ cd ..
echo "Building ComfyUI with ROCm 7.1 (General)..."
PYTORCH_INDEX_URL="https://download.pytorch.org/whl/nightly/rocm7.1"
GPU_ARCH="rocm7.1"
python3 -m venv rocm7.1 && \
. rocm7.1/bin/activate && \
pip install --upgrade pip && \
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then \
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}; \
else \
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}; \
fi && \
pip install -r ComfyUI/requirements.txt && \
pip install opencv-python gguf
deactivate
python3 -m venv rocm7.1
. rocm7.1/bin/activate
pip install --upgrade pip
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}
else
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}
fi
pip install -r ComfyUI/requirements.txt
pip install opencv-python gguf
deactivate
# RDNA 3 (RX 7000 series)
echo "Building ComfyUI for RDNA 3 (RX 7000 series)..."
PYTORCH_INDEX_URL="https://rocm.nightlies.amd.com/v2/gfx110X-dgpu/"
GPU_ARCH="gfx110X"
python3 -m venv gfx110X && \
. gfx110X/bin/activate && \
pip install --upgrade pip && \
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then \
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}; \
else \
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}; \
fi && \
pip install -r ComfyUI/requirements.txt && \
pip install opencv-python gguf
deactivate
python3 -m venv gfx110X
. gfx110X/bin/activate
pip install --upgrade pip
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}
else
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}
fi
pip install -r ComfyUI/requirements.txt
pip install opencv-python gguf
deactivate
# RDNA 3.5 (Strix halo/Ryzen AI Max+ 365)
echo "Building ComfyUI for RDNA 3.5 (Strix halo/Ryzen AI Max+ 365)..."
PYTORCH_INDEX_URL="https://rocm.nightlies.amd.com/v2/gfx1151/"
GPU_ARCH="gfx1151"
python3 -m venv gfx1151 && \
. gfx1151/bin/activate && \
pip install --upgrade pip && \
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then \
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}; \
else \
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}; \
fi && \
pip install -r ComfyUI/requirements.txt && \
pip install opencv-python gguf
deactivate
python3 -m venv gfx1151
. gfx1151/bin/activate
pip install --upgrade pip
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}
else
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}
fi
pip install -r ComfyUI/requirements.txt
pip install opencv-python gguf
deactivate
# RDNA 4 (RX 9000 series)
echo "Building ComfyUI for RDNA 4 (RX 9000 series)..."
PYTORCH_INDEX_URL="https://rocm.nightlies.amd.com/v2/gfx120X-all/"
GPU_ARCH="gfx120X"
python3 -m venv gfx120X && \
. gfx120X/bin/activate && \
pip install --upgrade pip && \
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then \
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}; \
else \
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}; \
fi && \
pip install -r ComfyUI/requirements.txt && \
pip install opencv-python gguf
deactivate
python3 -m venv gfx120X
. gfx120X/bin/activate
pip install --upgrade pip
if echo "${PYTORCH_INDEX_URL}" | grep -q "rocm.nightlies.amd.com"; then
pip install --pre torch torchvision torchaudio --extra-index-url ${PYTORCH_INDEX_URL}
else
pip install --pre torch torchvision torchaudio --index-url ${PYTORCH_INDEX_URL}
fi
pip install -r ComfyUI/requirements.txt
pip install opencv-python gguf
deactivate
echo "All virtual environments created successfully!"
echo "Available environments:"
echo " - rocm7.1 (General ROCm 7.1)"
echo " - gfx110X (RDNA 3 - RX 7000 series)"
echo " - gfx1151 (RDNA 3.5 - Strix halo/Ryzen AI Max+ 365)"
echo " - gfx120X (RDNA 4 - RX 9000 series)"