はじめに
PythonでAPIを作成する機会があり、今後も学んでいくのにdocker環境を作っておきたかったのでこの機会にまとめてみます
ディレクトリ構成
sample-project
┣ app
┃ ┗ main.py
┣ tests
┣ docker-compose.yml
┣ Dockerfile
各ファイル
Dockerfile
FROM python:3.9-slim-buster
RUN apt-get update && apt-get install -y libsqlite3-dev
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
docker-compose.yml
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
requirements.txt
fastapi
uvicorn
pytest
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
動作確認
上記の構成でファイルを作成し、イメージのビルドを行います
$ docker-compose build
続いてコンテナの起動を行います
$ docker-compose up
localhost:8000にアクセスして以下の表示を確認できればOKです
また、localhost:8000/docsにアクセスすると、APIドキュメントを確認できました
続いて以下のコマンドでコンテナに入り、pytestを実行します
$ docker exec -it fastapi-sample-web-1 sh
# pytest
おわりに
次はエンドポイントの追加やテスト環境の作成などを行っていきます