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
6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
__pycache__/
*.py[cod]
input
models
notebooks
output
70 changes: 70 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# 3.10.11-bullseye, has python, git, but relatively small (<250MB)
ARG BASE_IMAGE="python@sha256:88fb365ea5d52ec8f5799f40a4742b9fb3c91dac92f7048eabaae194a25ccc28"
ARG GPU_MAKE="nvidia"
ARG UID=1000
ARG GID=1000

FROM ${BASE_IMAGE}
ARG GPU_MAKE
ARG UID
ARG GID

SHELL [ "/bin/bash", "-uec"]
RUN \
--mount=target=/var/lib/apt/lists,type=cache,sharing=locked \
--mount=target=/var/cache/apt,type=cache,sharing=locked \
<<'EOF'
apt-get update
apt-get install -yq git-lfs
echo "comfyui" >> /etc/hostname
EOF

# run instructions as user
USER ${UID}:${GID}
# run python from future venv
ENV PATH="/app/venv/bin:${PATH}"
# copy context to obvious location
COPY --chown=${UID}:${GID} ./ /app
# create cache directory *with user permissions*
WORKDIR /app/.cache
# default to app directory
WORKDIR /app
# set pip cache location
ENV XDG_CACHE_HOME="/app/.cache/pip"
# run with mounted cache
RUN --mount=type=cache,target=/app/.cache,uid=${UID},gid=${GID} <<'EOF'
mkdir -p /app/.cache/transformers
# choose package index based on chosen hardware
if [ "${GPU_MAKE}" = "nvidia" ]; then
EXTRA_INDEX_URL="https://download.pytorch.org/whl/cu118"
EXTRAS="xformers"
elif [ "${GPU_MAKE}" = "amd" ]; then
EXTRA_INDEX_URL="https://download.pytorch.org/whl/rocm5.4.2"
EXTRAS=""
elif [ "${GPU_MAKE}" = "cpu" ]; then
EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu"
EXTRAS=""
else
echo "Unknown GPU_MAKE provided as docker build arg."
exit 2
fi
# create virtual environment to manage packages
python -m venv venv
# install framework packages
pip install \
--extra-index-url "${EXTRA_INDEX_URL}" \
install \
torch \
torchvision \
torchaudio \
${EXTRAS}
pip install -r requirements.txt
EOF

# default environment variables
ENV COMFYUI_ADDRESS=0.0.0.0
ENV COMFYUI_PORT=8188
ENV COMFYUI_EXTRA_ARGS=""
ENV TRANSFORMERS_CACHE="/app/.cache/transformers"
# default start command
CMD bash -c "python -u main.py --listen ${COMFYUI_ADDRESS} --port ${COMFYUI_PORT} ${COMFYUI_EXTRA_ARGS}"
20 changes: 20 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
version: "3.9"

services:
comfyui:
user: "1000:1000"
build: .
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
ports:
- "8188:8188"
volumes:
- "./models:/app/models"
- "./input:/app/input"
- "./temp:/app/output/temp"
- "./output:/app/output"