0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FastAPIをdockerで動作させ、コードの更新をリアルタイムで反映する方法

Last updated at Posted at 2024-08-08

初めに

ChatGPTに聞いた回答そのままですが完璧だったので掲載

以下回答

DockerでFastAPIを実行し、コードの変更をリアルタイムで反映させるには、いくつかの方法があります。その一つは、ホストマシン上のファイルシステムをDockerコンテナにマウントし、FastAPIのリローディング機能を使用する方法です。

以下に、その手順を示します。

1. FastAPIプロジェクトの構成

まず、基本的なFastAPIプロジェクトを準備します。

ディレクトリ構造

my_fastapi_project/
├── app/
│   ├── main.py
├── Dockerfile
├── requirements.txt
├── docker-compose.yml

app/main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

requirements.txt

fastapi
uvicorn

2. Dockerfileの作成

次に、FastAPIアプリケーションを実行するためのDockerfileを作成します。

Dockerfile

FROM python:3.9-slim

# 作業ディレクトリを設定
WORKDIR /app

# 依存関係をインストール
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# アプリケーションのコードをコピー
COPY ./app /app/app

# FastAPIアプリケーションを起動
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

--reloadオプションは、コードの変更を監視し、自動的にリロードするためのものです。

3. docker-compose.ymlの作成

開発時にホストマシンのコードをコンテナにマウントするために、docker-compose.ymlファイルを作成します。

docker-compose.yml

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

4. Dockerコンテナのビルドと起動

次に、Dockerコンテナをビルドして起動します。

docker-compose up --build

このコマンドは、Dockerfileを使用してコンテナをビルドし、docker-compose.ymlの設定に従ってコンテナを起動します。

5. リアルタイムでのコードの更新

ホストマシン上のmy_fastapi_project/appディレクトリ内のファイルを編集すると、変更がリアルタイムでDockerコンテナに反映され、FastAPIが自動的にリロードされます。これにより、変更を即座にテストすることができます。

まとめ

この手法を使用すると、FastAPIのコード変更をリアルタイムで反映させることができます。開発中は、ホストマシンのファイルシステムをコンテナにマウントし、FastAPIの自動リロード機能を利用することで、効率的に開発を進めることができます。

追記

ウィンドウを閉じるとdockerコンテナが終了してしまうので-dを付ける

docker-compose up --build -d

終了するときは以下

docker-compose down
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?