Docker를 사용하여 경량 FastAPI 개발 환경 구축
소개
최근 FastAPI를 사용할 기회가 많았고, Docker로 빨리 빌드하고 일회용하고 싶었기 때문에
메모로서 경량으로 구축하는 방법을 남기고 싶습니다.
준비
버전
$ docker --version
Docker version 19.03.8, build afacb8b7f0
파일 구성
.
├── Dockerfile
├── docker-compose.yml
├── main.py
└── requirements.txt
출처
여기에서 clone 할 수 있습니다.
htps : // 기주 b. 코 m / 산토 씨 / 사 mp ぇ ふぁ
Dockerfile
alpine 기반으로 만들고 있습니다.
Dockerfile
FROM python:3.8-alpine
WORKDIR /app
COPY requirements.txt .
# コンテナ内で必要なパッケージをインストール
RUN apk add --no-cache build-base \
&& pip install --no-cache-dir --trusted-host pypi.python.org -r requirements.txt \
&& apk del build-base
COPY main.py .
EXPOSE 8000
# FastAPIを8000ポートで待機
CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
Docker Compose
docker-compose.yml
version: "3.0"
services:
# FastAPI
api:
container_name: "api"
build: .
restart: always
tty: true
ports:
- 8000:8000
필요한 패키지를 정리합니다.
requirements.txt
uvicorn
fastapi
샘플 코드
FastAPI 문서 에 있는 샘플 코드를 준비했습니다.
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
실행
$ docker-compose up -d --build
Docker Image 크기 확인
docker images | grep api
latest bff0158b61ca 29 minutes ago 275MB
본가님 을 참고로 구축한 결과입니다
$ docker images | grep api
latest 878110f2207f 11 seconds ago 1.02GB
본가에 비해 3.6배 줄일 수 있음을 알 수 있습니다.
동작 확인
FastAPI로 생성된 API는 Swagger에서 자동으로 문서화됩니다.
Swagger에서 살펴보기
ドメイン/docs
에 액세스하면 문서를 볼 수 있습니다.API 두드려보기
curl로 두드리면 이런 느낌으로 돌아옵니다
결과
$ curl localhost:8000
{"Hello":"World"}
결론
이번에는 alpine 기반으로 경량의 개발 환경을 구축해 보았습니다.
본가보다 3.6배 경량이 되기 때문에, 일회용에는 충분한 환경이라고는 생각합니다.
최근에는 Netflix를 시작해 다양한 프로젝트에서 FastAPI가 사용되기 시작했기 때문에,
아직 사용하지 않은 사람은 꼭 사용해보세요!
참고 사이트
Reference
이 문제에 관하여(Docker를 사용하여 경량 FastAPI 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satto_sann/items/fcd3832a1fea2c607b85텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)