-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Usage
Assuming you setup everything correctly, you can run any UI (interchangeably, but not in parallel) using the command:
docker compose --profile [ui] up --build
where [ui]
is one of invoke
, auto
, auto-cpu
, comfy
, or comfy-cpu
.
The data
and output
folders are always mounted into the container as /data
and /output
, use them so if you want to transfer anything from / to the container.
(Optional) If you want to customize the behaviour of the uis, you can create a docker-compose.override.yml
and override whatever you want from the main docker-compose.yml
file. Example:
services:
auto:
environment:
- CLI_ARGS=--lowvram
Possible configuration:
By default: --medvram
is given, which allow you to use this model on a 6GB GPU, you can also use --lowvram
for lower end GPUs. Remove these arguments if you are using a (relatively) high end GPU, like 40XX series cards, as these arguments will slow you down.
You can find the full list of cli arguments here.
Put the weights in the folder data/StableDiffusion
, you can then change the model from the settings tab.
There is multiple files in data/config/auto
such as config.json
and ui-config.json
which let you which contain additional config for the UI.
put your scripts data/config/auto/scripts
and restart the container
You can use the UI to install extensions, or, you can put your extensions in data/config/auto/extensions
.
There is also the option to create a script data/config/auto/startup.sh
which will be called on container startup, in case you want to install any additional dependencies for your extensions or anything else.
Different extensions require additional dependencies. Some of them might conflict with each other and changing versions of packages could break things. Use the startup.sh
script to install and guarantee the needed dependencies (pip
, apt
, and any others).
In case something goes wrong with some dependency (as it is usually the case, unfortunately) you can always comment section in startup.sh
file, remove the extension, and do docker compose --profile auto down
to clean up messy containers. When run again, you will have a fresh container.
An example of your startup.sh
might looks like this:
# install all packages for the extensions
shopt -s nullglob
list=(./extensions/*/requirements.txt)
for req in "${list[@]}"; do
pip install -q -r "$req"
done
# opencv-python-headless to not rely on opengl and drivers.
pip install -q --force-reinstall opencv-python-headless
NOTE: dependencies of extensions might get lost when you create a new container, hence the installing them in the startup script is important.
It is not recommended to modify the Dockerfile for the sole purpose of supporting some extension (unless you truly know what you are doing).
I maintain neither the UI nor the extension, I can't help you.
CPU instance of the above, some stuff might not work, use at your own risk.