docker-composeでFastAPIを簡単構築

Docker

はじめに

以前Nginxの記事でFastAPIを使ったが、環境構築方法は残していなかったのでメモ。

Nginx&オレオレ証明証でNextJS&FastAPIをSSL化&HTTPS通信を行う
はじめに 自分でNext.jsでアプリを作っているときにスマホからPCのIPにアクセスして デザインを確認したい場面があった。 しかし、位置情報を使うアプリだったためスマホからはHTTP通信で位置情報はHTTPS通信を使うため 実行エラーに...

今回のリポジトリは以下で公開している

tech-blog/fastapi_docker at main · sonitan0803/tech-blog
色々備忘録. Contribute to sonitan0803/tech-blog development by creating an account on GitHub.

実装

構成

今回はdocker-coposeで環境構築を行うため、以下のような構築
FastAPIでのapiは “/”と”/users” のGetとAPIドキュメントの “/docs” が表示できるようにする

結果イメージは以下

・ / のGET
スクリーンショット 2024 11 10 14 00 24
・ /users のGET
スクリーンショット 2024 11 10 14 00 37
・ /docs
スクリーンショット 2024 11 10 14 00 47

ディレクトリ構成は以下


.
|_docker-compose.yml
|_fastapi
  |_requirements.txt
  |_Dockerfile
  |_app
     |_main.py
     |_routers
       |_users.py

docker-compose.yml

docker-compose.ymlは以下のような構成


version: "3.8"

services:
    fastapi:
        image: fastapi_image
        container_name: fastapi_sample
        build: ./fastapi
        ports:
            - 8080:8080

イメージ名・コンテナ名・ポートと、ビルドディレクトリを指定しているだけなので、特に特筆することはない

Dockerfile

FROM python:3.10-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt

COPY ./app/ .

CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8080"]

対象ディレクトリをコピーしてポート8080で開放するだけの簡単な実装。

一応 uvicorn の公式ドキュメントから、オプションの紐解きだけしておこう

–host Text

指定したアドレスでバインドする。デフォルトは127.0.0.1
今回0.0.0.0にしているのは、他のDockerコンテナ内やデバイスからのアクセスもすることを想定しているためである。
デフォルトの127.0.0.1だとlocalhostからのアクセスだけできるみたい。

Bind socket to this host. [default: 127.0.0.1]https://www.uvicorn.org/

指定したポートを開放するらしい。デフォルトは8000
0を指定した場合利用可能なポートを選択して開放するらしい

Bind socket to this port. If 0, an available port will be picked. [default: 8000] –uds TEXT Bind to a UNIX domain socket.https://www.uvicorn.org/

–reload

ローカルで実装を修正した場合のホットリロード対応をしてくれる。

Enable auto-reload.https://www.uvicorn.org/

requirements.txt

Pipでインストールする必要なパッケージ

一応公式の以下で必要なパッケージを記述している

FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production

fastapi
uvicorn

実行結果

以下のコマンドを実行する


$ docker-compose up -d --build

以下にアクセスして上記の結果例が見れたらOK

localhost:8080
localhost:8080/users
localhost:8080/docs

おわりに

今回FastAPIの内部実装には触れないが基本的にはチュートリアルレベルの
無いようなので、公式の以下を見て内容を理解すれば問題ないと思います。

FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production
この記事を書いた人
あかちゃん

現職のフロントエンジニア&組み込みエンジニア(現在2社目)
仕事では、C,C++,C#やTypescript,JavaScript,Html,CSS等の技術をメインに仕事しています。
組み込みだけをメインに7年ほどやり、ここ数年でweb関係の仕事をするようになってきました。
現在Web技術は副業をするため絶賛修行中

記事にはなるべくQitaとか個人ブログじゃなくて、公式などの一次ソースをなるべく載せるようにしたい。

あかちゃんをフォローする
DockerFastAPIバックエンド環境
スポンサーリンク
あかちゃんをフォローする

コメント

タイトルとURLをコピーしました