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/