【AI_1日目】FastAPI_1冊目
こんにちは投資ロウトです。
背景
AI開発ができるためにwebAPIについて理解を深めていきます。
※Tailwind CSSとkeycloakは現場でピンチになれば再開します。
進捗状況
少しずつ進めていっていますが、現在の進捗は以下になっています。
①要件定義:1冊
②設計:1冊
③システムビジネススキル:3冊 + 1冊目(keycloakが進行中)
④インフラ:3冊
⑤フロントエンド:0冊、1冊(TailwindCSSが進行中)
⑥AI:0冊
FastAPI
FastAPIは最近流行っているPython軽量のwebフレームのこと。
【特徴】
・FastAPIは定義ファイルを書かなくても、Swagger UIが自動生成される。
・スキーマを明示的に定義することで、型安全な開発が可能。
・非同期処理が行うことができて、高速。
余談ではありますが、初めて知ったことがあり、本がMarkdonwで書けるというのは、びっくりしました。
Poetry・・・プロジェクトを便利に管理するパッケージマネージャー及び仮想環境管理ツール
Docker
Dockerをインストール後docker composeがあるか確認する
docker compose version
docker-compose.yamlとDockerfileを作成
※省略
イメージのビルド
docker compose build
uvicorn・・・Python用の「ASGI Webサーバ」
FastAPIのインストール
docker compose run --entrypoint "poetry init --name アプリ名 --dependency fastapi --dependency uvicorn[standard]" アプリ名
FastAPIのパッケージのインストールを実施していきます。
docker compose run --entrypoint "poetry install --no-root" アプリ名
・poetry initとpoetry installでpyproject.tomlとpoetry.lockファイルができた状態になるので、新しいパッケージを入れる際は、以下のように再ビルドするだけでいいとのことです。
docker compose build --no-cache
投資ロウトを表示する
以下のファイルを作成する
/api/main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/doshirote")
async def printDoshirote():
return {"message": "投資ロウト"}
APIの立ち上げ
docker compose up
以下のエラーが発生
[+] Running 1/0
✔ Container fastapi_pra-demo-app-1 Created 0.0s
Attaching to fastapi_pra-demo-app-1
fastapi_pra-demo-app-1 | Usage: uvicorn [OPTIONS] APP
fastapi_pra-demo-app-1 | Try 'uvicorn --help' for help.
fastapi_pra-demo-app-1 |
fastapi_pra-demo-app-1 |
fastapi_pra-demo-app-1 | Error: No such option: --read (Possible options: --header, --reload, --reload-dir)
fastapi_pra-demo-app-1 exited with code 2
Dockerfileの--reloadを--readとしてしまっていたのが、原因だった。Dockerfileを適切に書き換えを行い、以下で修正を行い、
docker build --no-cache -t イメージ名 .
イメージ名がわからない場合の確認
docker images
再度実行を行う
docker-compose up
localhost:8000/docsにアクセスすると
表示されました。try it outを押下してExecuteを押下すると
正しく返却されました。
と一旦以上で学習を区切りたいと思います。焦らずコツコツ自分のペースで頑張っていきたいと思います。ご精読ありがとうございました。
Discussion