bff

フルスタックエンジニアを目指して学んだことなどを記録しています

Dockerで始めるFastAPI

最近話題になっているPythonのWebフレームワークであるFastAPIを少し試してみたいと思い、Dockerイメージを作成しました。

Dockerhubには登録していないので、こちらから利用してください。 https://github.com/tsbkw/fastapi

FastAPIとは

NodeJSやGoと同等のパフォーマンスを出すことができる高速なWebフレームワークです。

FastAPIは、標準のPythonタイプヒントに基づいてPython 3.6+でAPIを構築するための最新の高速(高性能)Webフレームワークです。 * Fast:NodeJSやGoと同等の非常に高いパフォーマンス(StarletteとPydanticのおかげで)。利用可能な最速のPythonフレームワークの1つ。 詳しくは(公式サイト)https://fastapi.tiangolo.comをご覧ください。

イメージファイルの中身

以下二つのライブラリを利用しています。   uvicorn: (http://www.uvicorn.org/)http://www.uvicorn.org/   gunicorn: (http://www.uvicorn.org/)http://www.uvicorn.org/

fastapiを利用するにはASGI(Asynchronous Server Gateway Interface、WSGIの後継。詳しくは(こちら)http://asgi.readthedocs.io)サーバが必要ということで、公式で例示されているuvicornを使っています。 また、uvicornのサーバおよびプロセス管理をするツールとして公式サイト上でgunicornが勧められていたのでこちらも合わせて導入しています。

OSは、当初alpineを考えていましたが、libcの実装の違いから速度が遅いようなので、debianを採用しています。 参考: https://superuser.com/questions/1219609/why-is-the-alpine-docker-image-over-50-slower-than-the-ubuntu-image  * タイトルではubuntuと書かれていますが、比較に使われているpython:3-slimのベースイメージは(debianになっていました)https://github.com/docker-library/python/blob/ce69fc6369feb8ec757b019035ddad7bac20562c/3.7/stretch/slim/Dockerfile