From e9bc8254dd5d7ccd1c47634bfe30712e1edcdd6f Mon Sep 17 00:00:00 2001 From: Eugene Brodsky Date: Mon, 26 Jun 2023 02:12:11 -0400 Subject: [PATCH] (docker) add a README for the docker setup --- docker/README.md | 66 ++++++++++++++++-------------------------------- 1 file changed, 22 insertions(+), 44 deletions(-) diff --git a/docker/README.md b/docker/README.md index 5d9de0fa65..91f7fb8c51 100644 --- a/docker/README.md +++ b/docker/README.md @@ -2,28 +2,33 @@ All commands are to be run from the `docker` directory: `cd docker` -Linux +#### Linux 1. Ensure builkit is enabled in the Docker daemon settings (`/etc/docker/daemon.json`) -2. Install `docker-compose` +2. Install the `docker compose` plugin using your package manager, or follow a [tutorial](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-22-04). + - The deprecated `docker-compose` (hyphenated) CLI continues to work for now. 3. Ensure docker daemon is able to access the GPU. + - You may need to install [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) -macOS +#### macOS 1. Ensure Docker has at least 16GB RAM 2. Enable VirtioFS for file sharing -3. Enable `docker-compose` V2 support +3. Enable `docker compose` V2 support This is done via Docker Desktop preferences ## Quickstart -1. Make a copy of `env.sample` and name it `.env` (`cp env.sample .env` (Mac/Linux) or `copy example.env .env` (Windows)). Make changes as necessary. -2. `docker-compose up` + +1. Make a copy of `env.sample` and name it `.env` (`cp env.sample .env` (Mac/Linux) or `copy example.env .env` (Windows)). Make changes as necessary. Set `INVOKEAI_ROOT` to an absolute path to: + a. the desired location of the InvokeAI runtime directory, or + b. an existing, v3.0.0 compatible runtime directory. +1. `docker compose up` The image will be built automatically if needed. -The runtime directory (holding models and outputs) will be created in your home directory, under `~/invokeai`, populated with necessary content (you will be asked a couple of questions during setup) +The runtime directory (holding models and outputs) will be created in the location specified by `INVOKEAI_ROOT`. The default location is `~/invokeai`. The runtime directory will be populated with the base configs and models necessary to start generating. ### Use a GPU @@ -35,40 +40,28 @@ The Docker daemon on the system must be already set up to use the GPU. In case o ## Customize -Check the `.env` file. It contains environment variables for running in Docker. Fill it in with your own values. Next time you run `docker-compose up`, your custom values will be used. +Check the `.env.sample` file. It contains some environment variables for running in Docker. Copy it, name it `.env`, and fill it in with your own values. Next time you run `docker compose up`, your custom values will be used. -You can also set these values in `docker-compose.yml` directly, but `.env` will help avoid conflicts when code is updated. +You can also set these values in `docker compose.yml` directly, but `.env` will help avoid conflicts when code is updated. -Example: +Example (most values are optional): ``` -LOCAL_ROOT_DIR=/Volumes/HugeDrive/invokeai +INVOKEAI_ROOT=/Volumes/WorkDrive/invokeai HUGGINGFACE_TOKEN=the_actual_token CONTAINER_UID=1000 GPU_DRIVER=cuda ``` -## Moar Customize! - -See the `docker-compose.yaml` file. The `command` instruction can be uncommented and used to run arbitrary startup commands. Some examples below. - - -#### Turn off the NSFW checker - -``` -command: - - invokeai - - --no-nsfw_check - - --web - - --host 0.0.0.0 -``` +## Even Moar Customizing! +See the `docker compose.yaml` file. The `command` instruction can be uncommented and used to run arbitrary startup commands. Some examples below. ### Reconfigure the runtime directory Can be used to download additional models from the supported model list -In conjunction with `LOCAL_ROOT_DIR` can be also used to create bran +In conjunction with `INVOKEAI_ROOT` can be also used to initialize a runtime directory ``` command: @@ -76,24 +69,9 @@ command: - --yes ``` - -#### Run in CLI mode - -This container starts InvokeAI in web mode by default. - -Override the `command` and run `docker compose: +Or install models: ``` command: - - invoke -``` - -Then attach to the container from another terminal: - -``` -$ docker attach $(docker compose ps invokeai -q) - -invoke> -``` - -Enjoy using the `invoke>` prompt. To detach from the container, type `Ctrl+P` followed by `Ctrl+Q` (this is the escape sequence). + - invokeai-model-install +``` \ No newline at end of file