とにかくfast apiを動かしてみる
Docker環境構築
Dockerの起動でいくつか躓いたのでメモ。
Errorに書かれているリンク先にある対応をしてみたが、ダメだった。
BIOS のCPU設定で「Intel Virtualization Technology」を有効化することで動いた。(ものによっては「Intel VT-x」らしい)
そして、Errorのおかわり。
リンク先の「手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする」実施で解決し、Dockerが動かせるようになった。
Dockerfileの作成
- プロジェクトリポジトリに移動
- Dockerfileを作成
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
COPY ./app /app
FastAPiのコードの作成
- app ディレクトリを作成し、移動。
- main.py ファイルを作成:
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
このようなディレクトリ構造になっていればOK
appやmainにしたくない場合はDockerfileでCMDを書けばいいはず!
.
├── app
│ └── main.py
└── Dockerfile
Dockerイメージをビルド
$ docker build -t fastapi_image .
Docker コンテナを起動
$ docker run -d --name fastapi_container -p 80:80 fastapi_image
動作確認
-p について補足
前項の起動コマンドでは、コンテナの80番ポートをホストの80番ポートにバインド(割り当て)をしている。
下記のように変えると、ホスト側の8080ポートとバインドされるので、urlが
http://127.0.0.1:8080/items/5?q=somequery になる。
$ docker run -d --name fastapi_container -p 8080:80 fastapi_image
なお、ホスト側の80番ポートについてはイメージの仕様で決まっている。
終わりに
ひとまず動かすところまで。
次は、開発環境を整えてみます。