In letzter Zeit verwende ich häufig die Fast-API und wollte sie schnell mit Docker erstellen und wegwerfen. Als Memo möchte ich einen Weg hinterlassen, um es leicht zu bauen.
Ausführung
$ docker --version
Docker version 19.03.8, build afacb8b7f0
Dateiorganisation
.
├── Dockerfile
├── docker-compose.yml
├── main.py
└── requirements.txt
Sie können von hier aus klonen https://github.com/sattosan/sample-fastapi-alpine
Dockerfile Hergestellt auf alpiner Basis
Dockerfile
FROM python:3.8-alpine
WORKDIR /app
ADD requirements.txt .
#Installieren Sie die erforderlichen Pakete im Container
RUN apk add --no-cache build-base mariadb-connector-c-dev
# requirements.Installieren Sie die in txt aufgelisteten Python-Pakete
RUN pip install --no-cache-dir --trusted-host pypi.python.org -r requirements.txt
ADD main.py .
#Warten Sie auf Fast API an Port 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
Ich habe den Beispielcode in der FastAPI-Dokumentation (https://fastapi.tiangolo.com/) vorbereitet.
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
$ docker-compose up -d --build
--alpine-basierte Bildgröße
docker images | grep api
latest bff0158b61ca 29 minutes ago 275MB
Dies ist das Ergebnis des Baus mit Bezug auf Honke.
$ docker images | grep api
latest 878110f2207f 11 seconds ago 1.02GB
Sie können sehen, dass es im Vergleich zur ursprünglichen Familie um das 3,6-fache reduziert wurde
Von FastAPI generierte APIs werden von Swagger automatisch dokumentiert
Sie können das Dokument anzeigen, indem Sie auf "domain / docs" zugreifen
http://localhost:8000/docs
Wenn Sie es mit Locken schlagen, wird es so zurückkommen
Ergebnis
$ curl localhost:8000
{"Hello":"World"}
Dieses Mal habe ich versucht, eine leichtgewichtige Entwicklungsumgebung auf alpiner Basis aufzubauen.
Es ist 3,6-mal leichter als das ursprüngliche Haus, daher denke ich, dass es eine ausreichende Umgebung für den Einweggebrauch ist. Vor kurzem wurde FastAPI in verschiedenen Projekten eingesetzt, darunter auch in Netflix. Wenn Sie es noch nicht benutzt haben, versuchen Sie es bitte!
--Netflix OSS: https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072
--Honke: https://fastapi.tiangolo.com/