😽

fastapiをdocker環境で構築してみた。

2024/02/14に公開

こんにちは、フクロウです。

今回は簡単にfastapiでhelloと返ってくることを目的にやってみましょう。

環境
macOS Apple chip

前提
以下がインストールされていること
・Docker Desktop
・python 3.8
・pip 24.0

コピーいただけるだけで、使えます。多分.....

先にフォルダとファイルの構成から

app
L----main.py
  ----Pipfile
docker-compose.yaml
dockerfile
docker_recreate.sh ←私が作った独自ファイルです。なくても大丈夫

docker-compose.yaml

version: '3.8'
services:
  fastapi-hello:
    build: ./
    command: 'pipenv run uvicorn main:app --host 0.0.0.0 --port 80 --reload'
    ports: 
      - "8080:80"
    volumes:
      - './app:/code/app'

dockerfile

FROM python:3.8
RUN apt update && \
    apt-get install iputils-ping net-tools -y && \
    mkdir -p /code/app && \
    # pipのアップデート
    pip install --upgrade pip && \
    # pythonの仮想環境ライブラリ
    pip install pipenv && \
    pip install --upgrade pipenv && \
WORKDIR /code/app
COPY ./app/Pipfile /code/app/Pipfile
RUN pipenv install --python 3.8 --dev

main.py

from fastapi import Request, FastAPI

app = FastAPI()

@app.get("/hello")
def get():
    return "hello"

Pipfile

[dev-packages]
fastapi = "==0.109.2"
uvicorn = {extras = ["standard"], version = "==0.17.6"}

[requires]
python_version = "3.8.18"

docker_recreate.sh

docker-compose stop
docker-compose down
docker-compose build --no-cache
docker-compose create
docker-compose start

構築手順

・docker-compose up -d

あとは、ブラウザまたは、Postmanで以下にアクセス

http:0.0.0.0:8080/hello

上記でできるはず。

詰まった場合は、ご連絡を。。。修正します。

Discussion