0Pricing
Learn AI with Python · レッスン

モデル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-slim

WORKDIR /app

WORKDIRはコンテナ内の作業ディレクトリを設定します。それ以降のCOPYおよびRUNコマンドはこのディレクトリを基準に実行されるため、パスをすっきり保てます。

WORKDIR /app

requirements.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 8000

CMD命令

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. MLエンジニアのためのFastAPI入門
  2. リクエストとレスポンスのためのPydanticスキーマ
  3. MLモデルの読み込みと提供
  4. モデルAPIのDocker化
← Learn AI with Pythonに戻る