0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FastAPIをdockerで動かす

Posted at

はじめに

備忘録です。
Dockerは知っている前提なので、詳しい説明は省きます

構成

app
 - main.py
 - Dockerfile
.env
requirements.txt
docker-compose.yml

Dockerfile

FROM python:3.9-buster

WORKDIR /app

COPY ./requirements.txt .

RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

COPY ./app .

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

docker-compose.yml

version: "3.8"
services:
  app:
    build:
      context: ./
      dockerfile: ./app/Dockerfile
    env_file: ./.env
    tty: true
    volumes:
      - ./app:/app
    ports:
      - "8000:8000"
    environment:
      - TZ=Asia/Tokyo

ちょっとだけ説明

Dockerfileではrequirements.txtに列挙したmoduleをインストールするようにしています。
pythonではpackage.jsonのようなものがないので、このような方法で代用します

requirements.txt

fastapi
uvicorn
pydantic
typing

チームメンバーに共有する時は下記のようにしてください
立ち上げたコンテナ内で $ pip freeze > requirements.txt (依存も含めて使用しているmoduleを出力)
出力されたファイルの内容でrequirementsを上書きして共有する

hostの設定

Dockerfileでhostを0.0.0.0にしています
デフォルトではlocalhostで立ち上げてしまいます
なので下記のようにFastAPIのお馴染みのコマンドで立ち上げるとymlのportsを指定していてもdocker内部からしかアクセスできなくなります
uvicorn main:app --reload

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?