0
1

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のホットリロード設定をまとめてみた

Posted at

はじめに

FastAPIをDockerで開発する際、コードの変更をリアルタイムに反映させたい場面が多々あります。

そんなときに便利なのが「ホットリロード」です。

本記事では、FastAPIでホットリロードを有効にする方法について、実例を交えて解説します。

書こうと思ったきっかけ

FastAPI + Docker構成で開発を始めたとき、「コードを変更しても反映されない」という悩みに直面しました。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

調べてみると、--reload オプションや volumes: の設定が必要だと分かり、「これって意外とつまずく人多いのでは?」と思い、この記事を書くことにしました。

ホットリロードはどこ?

FastAPIのホットリロード(コードの変更がリアルタイムに反映される仕組み)は、uvicorn--reload オプションで実現されています。

✅ ホットリロードが有効な場所:

  • docker-compose.ymlcommand:
command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload
  • または DockerfileCMD:
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

✅ ホットリロードを有効にするポイント:

  • --reload を指定すること(すでに指定済み)
  • volumes: でローカルコードをマウント
volumes:
  - ./app:/app

これで、app フォルダの変更が即時コンテナに反映され、ホットリロードが機能します。

🔁 実際に試すには:

@app.get("/")
def read_root():
    return {"message": "🔥 Hello from FastAPI with hot reload!"}

保存するだけで、ターミナルに Reloading... と表示され、変更が反映されます。

💡補足:

  • --reload は開発専用です。本番では削除しましょう。
  • 開発中は若干パフォーマンスに影響しますが、非常に便利です。
  • uvicorn[standard] をインストールしていれば、内部で watchgod によりホットリロードが有効になります。

まとめ

FastAPIのホットリロードは、ちょっとした設定で大きく開発効率を向上させてくれます。--reload の指定と volumes: のマウント、この2点を押さえるだけでOK。

もし反映されないときは、command の書き方やマウント設定を見直してみてください!

Docker + FastAPIの組み合わせで快適な開発ライフを送りましょう!

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?