【Mac】Ollama + OpenWebUI: Docker Composeによる最短構築手順と「GPU問題」の現実
【Mac】Ollama + OpenWebUI: Docker Composeによる最短構築手順と「GPU問題」の現実解
最近、社内でも「ローカルLLM」の話題が尽きません。 データの機密性を保ちつつ、好き放題にAIを使える環境を手元に持っておくことは、技術検証において必須になりつつあります。
今回は、Macユーザー向けに Ollama(バックエンド)と OpenWebUI(フロントエンド)を組み合わせた環境を、エンジニアらしく Docker Compose でサクッと構築する手順を紹介します。
…が、実はそこには「Dockerには罠がある」という話もしなければなりません。 構築手順とセットで、Mac特有のパフォーマンス問題とその回避策(ハイブリッド構成)まで、現場目線で深掘りします。
Docker Composeで一発構築(基本編)
まずは「とにかく動かす」ことが大事です。 依存関係を汚さず、コマンド一発で環境が立ち上がるのがDockerの魅力です。
以下の docker-compose.yaml を作成します。
services:
# バックエンド: LLMを動かすエンジン
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ./ollama:/root/.ollama # モデルデータを永続化
restart: always
environment:
- OLLAMA_KEEP_ALIVE=24h # モデルをメモリに維持する時間
- OLLAMA_NUM_PARALLEL=2 # 並列リクエスト数
# フロントエンド: ChatGPTライクなUI
ollama-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: ollama-webui
restart: unless-stopped
ports:
- "8080:8080"
extra_hosts:
- "host.docker.internal:host-gateway" # コンテナからホストへアクセス用
depends_on:
- ollama
volumes:
- ./ollama-webui:/app/backend/data # チャット履歴等を永続化
environment:
- OLLAMA_BASE_URL=http://ollama:11434 # コンテナ間通信
volumes:
ollama:
ollama-webui:
起動とモデルの準備
# 起動
docker-compose up -d
# モデルのダウンロード(例: 軽量で高性能なLlama 3)
docker exec -it ollama ollama run llama3
これで http://localhost:8080 にアクセスすれば、アカウント作成画面(初回のみ)を経て、すぐにチャットが始められます。
チームメンバーに「これ試してみて」と共有するなら、このdocker-compose.yamlを渡すのが最適解です。
Macユーザーが直面する「重い」という現実
しかし、Mac(特にApple Silicon搭載機)で上記の手順を実行すると、あることに気づくはずです。
「…あれ、生成遅くない?」
ファンが勢いよく回り出し、PC本体が熱くなります。 実は、現在のDocker Desktop for Macの仕様上、コンテナ内のOllamaからはMacのGPU (Metal) に直接アクセスできません。
結果として、高性能なM1/M2/M3チップを積んでいても、LLMの推論処理を含めた全てを CPU で処理することになります。 これでは、せっかくのMacのパワフルさが台無しです。
CPU動作だと、7Bクラスのモデルでもレスポンスが「モッサリ」します。実用には少し厳しいレベルです。
最適解:ハイブリッド構成(Native + Docker)
そこで私が推奨する「ファイナルアンサー」がこれです。
- Ollama: Mac Native版アプリを使用(GPUフル活用)
- OpenWebUI: Dockerコンテナを使用(環境管理が楽)
この構成なら、推論はGPUで爆速、UIはDockerで管理という「いいとこ取り」が可能です。
手順1: Native Ollamaのセットアップ
1. 公式サイト (ollama.com) からMac版をダウンロードしてインストール。
2. ターミナルで ollama serve が動いていることを確認(アプリ起動で自動起動しています)。
手順2: 外部アクセス許可の設定
デフォルトでは、Native Ollamaはローカルホスト以外からの接続を拒否します。Dockerコンテナ(OpenWebUI)から接続させるため、環境変数を設定します。
# ターミナルで実行
launchctl setenv OLLAMA_ORIGINS "*"
※設定後はOllamaアプリを再起動してください(メニューバーのアイコンからQuit -> 再度起動)。
手順3: Docker Composeの修正
WebUIだけを立ち上げるシンプルな構成に変更します。
services:
ollama-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: ollama-webui
restart: unless-stopped
ports:
- "8080:8080"
extra_hosts:
- "host.docker.internal:host-gateway" # ここが重要!
volumes:
- ./ollama-webui:/app/backend/data # 履歴データの永続化
environment:
# Docker内部のOllamaではなく、ホストマシンのポート11434を見に行く
- OLLAMA_BASE_URL=http://host.docker.internal:11434
これで docker-compose -f docker-compose-hybrid.yaml up -d すれば完了です。
まとめ:適材適所で使い分ける
- Docker完結版: Windows/Linuxユーザーや、GPUリソースを気にせずとりあえず試したいチーム向け。配布が楽。
- ハイブリッド版: Macユーザーの個人の開発環境向け。GPUパワーを解放し、ストレスフリーな対話が可能。
技術的には「すべてDocker」が美しいのですが、ハードウェアの特性を活かすならこの一工夫が必要になります。 「導入してみたけど重くて使わなくなった」とならないよう、Macユーザーの皆さんはぜひNative版との連携を試してみてください。
コメント
コメントを投稿