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。