Created
August 22, 2024 02:01
-
-
Save jhurliman/c707824ddb89edb274a92a54d00a87c0 to your computer and use it in GitHub Desktop.
ComfyUI in Docker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# syntax=docker/dockerfile:1 | |
ARG PYTHON_VERSION=3.11 | |
FROM python:${PYTHON_VERSION}-slim | |
ARG PYTORCH_INSTALL_ARGS="" | |
ARG EXTRA_ARGS="" | |
ARG USERNAME=comfyui | |
ARG USER_UID=1000 | |
ARG USER_GID=${USER_UID} | |
# Fail fast on errors or unset variables | |
SHELL ["/bin/bash", "-eux", "-o", "pipefail", "-c"] | |
RUN <<EOF | |
groupadd --gid ${USER_GID} ${USERNAME} | |
useradd --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME} | |
EOF | |
RUN <<EOF | |
apt-get update | |
apt-get install -y --no-install-recommends \ | |
git \ | |
git-lfs \ | |
rsync \ | |
libgl1-mesa-glx \ | |
ffmpeg \ | |
fonts-recommended | |
EOF | |
# run instructions as user | |
USER ${USER_UID}:${USER_GID} | |
WORKDIR /app | |
ENV XDG_CACHE_HOME=/cache | |
ENV PIP_CACHE_DIR=/cache/pip | |
ENV VIRTUAL_ENV=/app/venv | |
ENV VIRTUAL_ENV_CUSTOM=/app/custom_venv | |
# create cache directory. During build we will use a cache mount, | |
# but later this is useful for custom node installs | |
RUN --mount=type=cache,target=/cache/,uid=${USER_UID},gid=${USER_GID} \ | |
mkdir -p ${PIP_CACHE_DIR} | |
# create virtual environment to manage packages | |
RUN python -m venv ${VIRTUAL_ENV} | |
# run python from venv (prefer custom_venv over baked-in one) | |
ENV PATH="${VIRTUAL_ENV_CUSTOM}/bin:${VIRTUAL_ENV}/bin:${PATH}" | |
RUN --mount=type=cache,target=/cache/,uid=${USER_UID},gid=${USER_GID} \ | |
pip install torch torchvision torchaudio opencv-python ${PYTORCH_INSTALL_ARGS} | |
# copy requirements files first so packages can be cached separately | |
COPY --chown=${USER_UID}:${USER_GID} requirements.txt . | |
RUN --mount=type=cache,target=/cache/,uid=${USER_UID},gid=${USER_GID} \ | |
pip install -r requirements.txt | |
COPY --chown=${USER_UID}:${USER_GID} . . | |
# default environment variables | |
ENV COMFYUI_ADDRESS=0.0.0.0 | |
ENV COMFYUI_PORT=8188 | |
ENV COMFYUI_EXTRA_BUILD_ARGS="${EXTRA_ARGS}" | |
ENV COMFYUI_EXTRA_ARGS="" | |
# default start command | |
CMD \ | |
if [ -d "${VIRTUAL_ENV_CUSTOM}" ]; then \ | |
rsync -aP "${VIRTUAL_ENV}/" "${VIRTUAL_ENV_CUSTOM}/" ;\ | |
sed -i "s!${VIRTUAL_ENV}!${VIRTUAL_ENV_CUSTOM}!g" "${VIRTUAL_ENV_CUSTOM}/pyvenv.cfg" ;\ | |
fi ;\ | |
python -u main.py --listen ${COMFYUI_ADDRESS} --port ${COMFYUI_PORT} ${COMFYUI_EXTRA_BUILD_ARGS} ${COMFYUI_EXTRA_ARGS} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: "3.9" | |
services: | |
comfyui: | |
user: "1000:1000" | |
build: | |
context: . | |
dockerfile: Dockerfile.ComfyUI | |
environment: | |
NVIDIA_VISIBLE_DEVICES: "all" | |
deploy: | |
resources: | |
reservations: | |
devices: | |
- driver: nvidia | |
count: 1 | |
capabilities: ["gpu", "compute", "utility"] | |
ports: | |
- "8188:8188" | |
volumes: | |
- "./custom_nodes:/app/custom_nodes" | |
- "./models:/app/models" | |
- "./input:/app/input" | |
- "./temp:/app/output/temp" | |
- "./output:/app/output" | |
- "./cache:/cache" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment