Docker Compose を使って高速 API アプリケーションを構築する方法

0 株式
0
0
0
0

導入

FastAPI は、高パフォーマンスを実現するように設計された Python 用の最新の Web フレームワークであり、アプリケーション、特に AI ベースのアプリケーションの開発に最適です。.

このチュートリアルでは、Docker Composeを使用してUbuntuマシンにFastAPIアプリケーションを作成し、デプロイする手順を説明します。この方法はデプロイを簡素化し、アプリケーションにAIを統合するための強固な基盤を提供します。.

前提条件
  • sudo権限を持つ非rootユーザーでUbuntuサーバーを実行し、ファイアウォールを有効にします。設定方法については、こちらのリストからディストリビューションを選択し、「サーバー入門ガイド」に従ってください。サポートされているバージョンのUbuntuを実行していることを確認してください。このチュートリアルでは、Ubuntu 24.04 LTSマシンを使用します。.
  • Linux コマンドラインを理解する コマンドラインの概要や復習については、Linux コマンドライン入門のガイドを参照してください。.
  • Ubuntu ターミナルで sudo apt-get update を実行し、システムに設定されているリポジトリから入手可能なソフトウェアの最新バージョンとセキュリティ更新がシステムにインストールされていることを確認します。.

これらの手順は、Ubuntu 24.04、Ubuntu 22.04、Ubuntu 20.04、Ubuntu 18.04 の最新バージョンに適用されます。Ubuntu 16.04 以前をご利用の場合は、これらのバージョンはサポート対象外となっているため、最新バージョンへのアップグレードをお勧めします。この手順は、Ubuntu マシンのアップグレードに役立ちます。.

ステップ1 – Python環境の設定

Ubuntu 24.04マシンでは、Python 3がデフォルトでインストールされています。ターミナルを開き、以下のコマンドを実行して、Python 3がインストールされていることを確認してください。

python3 --version

マシンに Python 3 がすでにインストールされている場合、このコマンドは Python 3 の現在のバージョンを返します。インストールされていない場合は、次のコマンドを実行して Python 3 のインストールを取得できます。

sudo apt install python3

次に、pipとdevパッケージのインストーラーをシステムにインストールする必要があります。pipパッケージマネージャーはPython Package Indexからパッケージをインストールするために必要であり、devパッケージはコンパイルされたコードを含むPythonモジュールをビルドするために必要です。ターミナルで以下のコマンドを実行してください。

sudo apt install python3-pip python3-dev

ステップ2 – 仮想環境を作成してアクティブ化する

<$>[注] Ubuntuバージョン24.04未満をご利用の場合は、仮想環境を作成する必要はありません。次の手順に進んでください<$>。.

次のステップは、Ubuntuインストール内に仮想環境を作成し、Pythonパッケージをシステム環境から分離することです。これを行うには、作業ディレクトリに移動して次のコマンドを実行します。

python3 -m venv fastapi-env

このコマンドは、fastapi-envというディレクトリに新しい仮想環境を作成します。これ以降にインストールするパッケージは、他のプロジェクトから分離されます。.

次に、この仮想環境を有効にして、今後インストールするパッケージがこの分離された環境にインストールされるようにする必要があります。.

source fastapi-env/bin/activate

実行すると、仮想環境名のプレフィックスが次のようになっていることを示すターミナルプロンプトが表示されます。

Output
(fastapi-env) ubuntu@user:

ステップ3 – Dockerをインストールして有効化する

次のステップは、仮想環境に Docker と Docker Compose をインストールすることです。.

sudo apt install -y docker.io

Docker をインストールしたら、Docker サービスを起動し、システムの起動時に起動するようにします。

sudo systemctl start docker
sudo systemctl enable docker

Docker Compose の最新の安定バージョンを確実に入手するには、apt を使用する代わりに、公式 GitHub リポジトリからダウンロードします。.

まず、Docker の公式 GitHub リリース ページで最新バージョンが利用可能であることを確認してから、ターミナルで次の CURL コマンドを実行します。.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose

次のコマンドを実行して、マシン上のすべてのユーザーが docker-compose バイナリを実行できるようにします。.

sudo chmod +x /usr/bin/docker-compose

次のコマンドを実行してインストールを確認します。

docker-compose --version

ステップ4 – FastAPIアプリケーションを作成する

さあ、FastAPIフレームワークを使ったPythonアプリケーションの作成を始めましょう。まずはmain.pyファイルを作成しましょう。

nano main.py

以下は、FastAPI フレームワークと事前トレーニング済みの AI モデルを使用して、特定のテキストの感情を分析するシンプルな Web API を作成するサンプル Python プログラムです。.

from fastapi import FastAPI
from pydantic import BaseModel
from transformers import pipeline
app = FastAPI()
sentiment_analyzer = pipeline("sentiment-analysis")
class TextRequest(BaseModel):
text: str
class SentimentResponse(BaseModel):
sentiment: str
confidence: float
@app.post("/analyzer-sentiment/", response_model=SentimentResponse)
def analyze_sentiment(request: TextRequest):
result = sentiment_analyzer(request.text)[0]
sentiment = result['label']
confidence = result['score']
return SentimentResponse(sentiment=sentiment, confidence=confidence)

このアプリケーションを正常に実行するには、必要な依存関係が必要ですが、手動でインストールする必要はありません。これらのパッケージのインストールは、次のステップで説明するDockerfile内で行われます。.

ステップ5 – DockerfileとYAML構成を作成する

次に、このアプリケーションのDockerfileを作成します。このDockerfileは、FastAPIアプリケーションが実行される環境を定義します。以下のコマンドを実行して、プロジェクトディレクトリにDockerfileを作成します。

nano Dockerfile

テキスト エディターで次のコンテンツを追加します。

FROM python:3.12-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir fastapi pydantics transformers uvicorn
EXPOSE 80
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

Docker Composeは、マルチコンテナアプリケーションの管理を簡素化します。次に、プロジェクトディレクトリにdocker-compose.yml設定ファイルを作成する必要があります。.

nano docker-compose.yml

空のファイルに次の内容を追加します。

version: '3.8'
services:
web:
build: .
ports:
- "8000:80"
volumes:
- .:/app

この構成では、

  • バージョン: 使用する Docker Compose のバージョンを指定します。.
  • サービス: 作成する必要があるサービスを定義します。.
  • web: FastAPI アプリケーションを実行するサービスの名前を指定します。.
  • build: Docker イメージをビルドするディレクトリを指定します。この場合、docker-compose.yml が配置されているディレクトリと同じです。.
  • ポート: ホスト マシン上のポート 8000 をコンテナー内のポート 80 にマッピングします。.
  • volumes: 現在のディレクトリをコンテナ内のボリュームとしてマウントし、ライブ コードを再ロードできるようにします。.

ステップ6 – Dockerコンテナの構築と実行

Docker Compose を使用してこの Docker イメージをビルドし、コンテナを起動します。

sudo docker-compose build

このコマンドは、現在のディレクトリにあるDockerfileからDockerイメージをビルドします。実際のアプリケーションを実行するには、ターミナルで次のコマンドを実行します。

sudo docker-compose up

ステップ7 – FastAPIアプリケーションにアクセスする

コンテナが実行されると、Web ブラウザで http://localhost:8000 にアクセスして FastAPI アプリケーションにアクセスできるようになります。.

ステップ8 [オプション] – Dockerコンテナを管理する

ここでは、FastAPI アプリケーションを実行するコンテナ環境をより適切に制御するのに役立つヒントをいくつか紹介します。.

  • 実行中のコンテナを停止するには、Ctrl + C または Command + . を押します。.
  • コンテナがバックグラウンドで実行されているときに制御を返すには、次を使用します。
sudo docker-compose up -d
  • コンテナを停止して削除するには、次のコマンドを実行します。
sudo docker-compose down

結論

このチュートリアルでは、Docker Composeを使用してUbuntuマシンにFastAPIアプリケーションを作成し、デプロイする方法を学びました。FastAPIのスピードとDockerの効率性により、堅牢でスケーラブルなアプリケーションを自信を持って構築できます。.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない