madiator-docker-runpod/official-templates/better-comfyui/Dockerfile

84 lines
2.8 KiB
Text
Raw Normal View History

2024-07-01 15:57:52 +02:00
# Stage 1: Base Image
2024-07-27 11:02:51 +02:00
FROM madiator2011/better-base:cuda12.1 as base
2024-07-01 15:57:52 +02:00
2024-07-27 11:02:51 +02:00
ARG PYTHON_VERSION1=3.10
ARG TORCH=torch==2.3.0+cu121
2024-07-01 15:57:52 +02:00
# Stage 2: ComfyUI Installation
FROM base as comfyui-install
# Create and activate virtual environment for ComfyUI installation
RUN python -m venv /venv
ENV PATH="/venv/bin:$PATH"
2024-07-27 11:02:51 +02:00
ENV VIRTUAL_ENV="/venv"
# Install PyTorch within the virtual environment
RUN if [ -n "${TORCH}" ]; then \
/venv/bin/pip install --upgrade --no-cache-dir ${TORCH}; \
fi
2024-07-01 15:57:52 +02:00
RUN git clone https://github.com/comfyanonymous/ComfyUI.git && \
cd /ComfyUI && \
2024-07-27 11:02:51 +02:00
/venv/bin/pip install -r requirements.txt && \
2024-07-01 15:57:52 +02:00
git clone https://github.com/ltdrdata/ComfyUI-Manager.git custom_nodes/ComfyUI-Manager && \
cd custom_nodes/ComfyUI-Manager && \
2024-07-27 11:02:51 +02:00
/venv/bin/pip install -r requirements.txt && \
/venv/bin/pip install -U xformers --index-url https://download.pytorch.org/whl/cu121 && \
/venv/bin/pip install -U accelerate wheel
2024-07-01 15:57:52 +02:00
2024-07-27 11:02:51 +02:00
# Stage 3: Model Setup
FROM comfyui-install as model-setup
2024-07-01 15:57:52 +02:00
# Create model and cache directories
RUN mkdir -p /root/.cache/huggingface && mkdir -p /comfy-models
2024-07-27 11:02:51 +02:00
ARG INCLUDE_MODELS=false
# Download each model in a separate layer
RUN if [ "${INCLUDE_MODELS}" = "true" ]; then \
wget -q --show-progress https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors -O /comfy-models/v1-5-pruned-emaonly.safetensors; \
fi
RUN if [ "${INCLUDE_MODELS}" = "true" ]; then \
wget -q --show-progress https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.safetensors -O /comfy-models/v2-1_768-ema-pruned.safetensors; \
fi
RUN if [ "${INCLUDE_MODELS}" = "true" ]; then \
wget -q --show-progress https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors -O /comfy-models/sd_xl_base_1.0.safetensors; \
fi
RUN if [ "${INCLUDE_MODELS}" = "true" ]; then \
wget -q --show-progress https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors -O /comfy-models/sd_xl_refiner_1.0.safetensors; \
fi
2024-07-01 15:57:52 +02:00
# Verify models were downloaded
2024-07-27 11:02:51 +02:00
RUN if [ "${INCLUDE_MODELS}" = "true" ]; then \
ls -lh /comfy-models; \
fi
2024-07-01 15:57:52 +02:00
2024-07-27 11:02:51 +02:00
# Stage 4: Final Image
FROM comfyui-install as final
2024-07-01 15:57:52 +02:00
2024-07-27 11:02:51 +02:00
# Copy models if they were included
COPY --from=model-setup /comfy-models /comfy-models
2024-07-01 15:57:52 +02:00
# Set environment variables for runtime
ENV PATH="/workspace/venv/bin:$PATH"
ENV VIRTUAL_ENV="/workspace/venv"
2024-07-27 11:02:51 +02:00
# Copy the README.md
COPY README.md /usr/share/nginx/html/README.md
# NGINX Proxy
COPY --from=proxy nginx.conf /etc/nginx/nginx.conf
COPY --from=proxy readme.html /usr/share/nginx/html/readme.html
2024-07-01 15:57:52 +02:00
2024-07-27 11:02:51 +02:00
# Copy all necessary scripts
COPY pre_start.sh /pre_start.sh
2024-07-01 15:57:52 +02:00
COPY --from=scripts start.sh /
RUN chmod +x /start.sh
2024-07-27 11:02:51 +02:00
RUN chmod +x /pre_start.sh
2024-07-01 15:57:52 +02:00
2024-07-27 11:02:51 +02:00
# CMD
CMD [ "/start.sh" ]