フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

dockerでfastapiを動かす環境を構築する

はじめに

  • FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以降でAPI を構築するための、モダンで、高速(高パフォーマンス)な、Web フレームワークです。 fastapi.tiangolo.com

  • fastapiはstarletteをラッピングしているので、基本starletteが、すごいんじゃないかとおもう。 www.starlette.io

docker-compose.yml

version: '3'
services:
  fastapi:
    container_name: backend
    build:
      context: .
      dockerfile: Dockerfile-fastapi
    volumes:
      - ./app:/srv/api/src
    ports:
      - "8000:8000"      
    tty: true

Dockerファイル

FROM python:3.9-alpine

RUN apk add --no-cache mariadb-dev  gcc libc-dev

WORKDIR /srv/api/src

ADD requirements.txt .

RUN pip install --trusted-host pypi.python.org -r requirements.txt

COPY main.py .

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

requirements.txtファイル

uvicorn
fastapi
mysqlclient
sqlalchemy

main.pyファイルの中身

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}

動作確認

  • localhost:8000にアクセスするとブラウザに下記のように表示される
{"Hello":"World"}