このドキュメントは、FramePack-FastAPI プロジェクトの Docker イメージを構築するための Dockerfile 作成計画を記述します。GPU (CUDA 12.6) 利用、Hugging Face Hub へのアクセス、FastAPI サーバーの実行を考慮します。
-
ベースイメージの選定:
- Python 3.10 と CUDA 12.6 に対応する公式イメージを選択します。
- 候補:
nvidia/cuda:12.6.0-cudnn8-devel-ubuntu22.04(または同等の機能を持つイメージ) - 理由: Python バージョン、CUDA 要件を満たし、
apt-getによるシステムライブラリのインストールが可能です。
-
システム依存ライブラリのインストール:
opencv-python-contrib,av, モデルダウンロード (git) に必要なライブラリをインストールします。- コマンド:
apt-get update && apt-get install -y --no-install-recommends ffmpeg libsm6 libxext6 git && rm -rf /var/lib/apt/lists/* - 理由: アプリケーションの実行とモデル取得に必要な依存関係を解決します。
--no-install-recommendsとrm -rf /var/lib/apt/lists/*でイメージサイズを削減します。
-
Python 環境のセットアップ:
pipを最新バージョンにアップグレードします。requirements.txtをコンテナにコピーします。- GPU 対応 PyTorch のインストール:
README.mdに記載の CUDA 12.6 対応コマンドを実行します。- コマンド:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
- コマンド:
- 残りの依存関係のインストール:
requirements.txtからtorchとtorchvisionを除外してインストールします。requirements.txtを編集するか、grep -vE '^torch|^torchvision'などでフィルタリングしてインストールします。- コマンド例 (フィルタリング):
grep -vE '^torch|^torchvision' requirements.txt | pip install --no-cache-dir -r /dev/stdin - 理由:
requirements.txtに記載の CPU 版 PyTorch を避け、指定された GPU 版をインストールします。--no-cache-dirでイメージサイズを削減します。
-
アプリケーションコードのコピー:
-
.dockerignoreファイルを作成し、不要なファイルやディレクトリ (.git,venv/,__pycache__,*.7z,temp_queue_images/,tests/,*.mdなど) を指定して、ビルドコンテキストとイメージサイズを削減します。 -
プロジェクト全体 (
.) をコンテナ内の作業ディレクトリ/appにコピーします。 -
コマンド:
COPY .dockerignore .dockerignore COPY . /app
-
-
Hugging Face Hub 認証:
- 認証トークンは Dockerfile に含めず、コンテナ実行時に環境変数
HUGGING_FACE_HUB_TOKENとして渡すことを想定します。 - 理由: セキュリティのベストプラクティスに従います。Hugging Face ライブラリは通常、この環境変数を自動的に検出します。
- 認証トークンは Dockerfile に含めず、コンテナ実行時に環境変数
-
ポートの公開:
- FastAPI アプリケーションが使用するポート
8080を公開します。 - コマンド:
EXPOSE 8080
- FastAPI アプリケーションが使用するポート
-
作業ディレクトリの設定:
- コンテナ内の作業ディレクトリを
/appに設定します。 - コマンド:
WORKDIR /app
- コンテナ内の作業ディレクトリを
-
起動コマンドの設定:
- コンテナ起動時に FastAPI サーバーを実行するコマンドを設定します。
- コマンド:
CMD ["uvicorn", "api.api:app", "--host", "0.0.0.0", "--port", "8080"]
graph TD
A[ベースイメージ選定 (Python 3.10 + CUDA 12.6)] --> B(システム依存ライブラリ インストール (ffmpeg, libsm6, libxext6, git));
B --> C(Python 環境セットアップ (pip upgrade));
C --> D(GPU対応PyTorchインストール (cu126));
D --> E(requirements.txt インストール (torch除く, --no-cache-dir));
E --> F(アプリケーションコード コピー (`.` -> `/app`, .dockerignore));
F --> G(Hugging Face Hub 認証設定 (環境変数想定));
G --> H(ポート公開: 8080);
H --> I(作業ディレクトリ設定 (/app));
I --> J(起動コマンド設定 (uvicorn));
この計画に基づき、Code モードで Dockerfile と .dockerignore ファイルを作成します。