モデルAPIのDocker化
FastAPIとモデル向けのDockerfile、マルチステージビルド、ヘルスチェックエンドポイント、docker-composeについて学習します。
「モデルAPIのDocker化」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
Dockerを使う理由
Dockerは、API、Pythonのバージョン、すべての依存関係を、どのマシンでも同じように動作するポータブルなイメージにまとめます。「自分の環境では動く」問題を解消し、MLサービスを配布する標準的な方法です。
Dockerfile
Dockerfileは、ビルド手順を記述したレシピです。各命令がキャッシュ可能なレイヤーを作成するため、手順を適切な順序にすると再ビルドが高速になります。
FROM python:3.11-slim
FROM行ではベースイメージを指定します。python:3.11-slimはPythonがあらかじめインストールされた小さなDebianイメージで、フルイメージより大幅に軽量です。そのため、最終イメージのサイズと攻撃対象領域を小さくできます。
FROM python:3.11-slimWORKDIR /app
WORKDIRはコンテナ内の作業ディレクトリを設定します。それ以降のCOPYおよびRUNコマンドはこのディレクトリを基準に実行されるため、パスをすっきり保てます。
WORKDIR /apprequirements.txtを先にコピーする
ソースコードより前に、requirements.txtだけをコピーします。Dockerはレイヤーをキャッシュするため、依存関係が再インストールされるのはrequirementsが変更されたときだけです。コードを編集するたびに再インストールする必要がなくなり、再ビルドが大幅に高速になります。
COPY requirements.txt .RUN pip install --no-cache-dir
RUNはビルドコマンドを実行します。--no-cache-dirを指定するとpipのダウンロードキャッシュを作成しないため、イメージを小さくできます(イメージ内ではキャッシュは不要です)。
RUN pip install --no-cache-dir -r requirements.txtソースコードをコピーする
ここでアプリケーションの残りのファイルをコピーします。pip installの後に実行することで、コードを編集してもキャッシュ済みの依存関係レイヤーが無効になりません。
COPY . .EXPOSE 8000
EXPOSEは、コンテナがリッスンするポートを記述します。ポート自体を公開するわけではありません(実行時に-pで公開します)が、読み手やツールに意図を伝えます。
EXPOSE 8000CMD命令
CMDは、コンテナの起動時に実行されるデフォルトコマンドを定義します。ここでは、コンテナの外部からアクセスできるよう、0.0.0.0にバインドしてuvicornを起動します。
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]完全なDockerfile
すべての要素を、キャッシュを活用できる正しい順序で並べます。
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]ビルドと実行
タグを付けてイメージをビルドし、-pを使ってコンテナのポートをホストに割り当てて実行します。
# terminal
docker build -t model-api .
docker run -p 8000:8000 model-apiクイックチェック
Dockerに関する知識を確認しましょう。
まとめ
APIをDocker化しました。FROM python:3.11-slim、WORKDIR /appを指定し、最初にrequirements.txtをコピーして、RUN pip install --no-cache-dirを実行しました。その後ソースコードをコピーし、EXPOSE 8000とuvicornを起動するCMDを追加しました。レイヤーキャッシュを活用できるよう手順を並べることで、再ビルドを高速に保てます。これでFastAPIサービングコースと今回のコンテンツは終了です。
よくある質問
「モデルAPIのDocker化」レッスンは無料ですか?
はい。「モデルAPIのDocker化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「モデルAPIのDocker化」で何を学びますか?
FastAPIとモデル向けのDockerfile、マルチステージビルド、ヘルスチェックエンドポイント、docker-composeについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「モデルAPIのDocker化」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。