ComfyUI を docker compose で構築する
Stable Diffusion 3 Medium を実行する環境を ComfyUI で用意した手順 では、コンテナを立ち上げて手動で ComfyUI を構築していました。
Ollama と OpenWebUI でローカル LLM では、docker compose を使いましたが、これが便利だったので、ComfyUI も docker compose で構築してみます。
準備
WSL2 の Docker で CUDA する を参考に、GPU を使えるように設定済みのコンテナを使います。
ComfyUI 用に以下の内容を記述したファイルを、compose.yml のファイル名で作成します。なお、デフォルトで使用されるファイル名が同じなのと、フォルダ構成が競合すると面倒なので、OpenWebUI とは別フォルダにファイルを配置するようにしています。
services:
comfyui:
image: nvcr.io/nvidia/tensorrt:24.06-py3
volumes:
- ./ComfyUI:/ComfyUI
command:
- /bin/bash
- -c
- |
apt update
apt install -y git python3-pip libgl1-mesa-dev libglib2.0-0
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
cd /ComfyUI/
pip install -r requirements.txt
python main.py --listen
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]
ports:
- "8188:8188"
TensorRT 拡張を使うことも考慮して tensorrt のイメージを使用すること、8188 番ポートを転送すること、GPU を有効にするための設定を記述しています。また、command
ディレクティブにパッケージのインストールを記述しています。この書き方だとコンテナを stop/start する度にこの処理が走ってしまいますが、気になるほどの時間はかからないのでこのようにしています。
さらに同じディレクトリに ComfyUI のリポジトリをクローンしておきます。また、同じく必須と思われる ComfyUI-Manager のリポジトリもクローンしておきます。これは、compose.yml を作成したディレクトリで以下コマンドを実行することで可能です。
git clone https://github.com/comfyanonymous/ComfyUI.git
pushd ComfyUI/custom_nodes/
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
popd
この状態で、以下のディレクトリ構成になっているはずです。
.
|- ComfyUI/
|- api_Server/
|- app/
|- ...
|- custom_nodes/
|- ComfyUI-Manager/
|- input/
|- ...
-- compose.yml
起動
ファイル、ディレクトリの準備ができたら、以下のコマンドを実行します。
docker compose up
しばらく待つとターミナルに Starting server / To see the GUI go to: http://0.0.0.0:8188
と表示されるので、ブラウザで URL にアクセスします。
これで WebUI を開くことができます。
モデルはコンテナ外からでも ComfyUI/models
以下へ配置できます。UI に反映されない場合はメニューの Refresh
をクリックすれば読み込まれると思います。生成した画像等も ComfyUI/output
へ出力されるので、コンテナ外からのアクセスが容易です。
docker compose 一回で WebUI の起動まで可能になるので、便利になりました。