[PYTHON] Créer un environnement de développement d'API rapide léger à l'aide de Docker

introduction

Récemment, j'utilise souvent l'API Fast, et je voulais la construire rapidement avec Docker et la jeter. Pour mémoire, je voudrais laisser un moyen de le construire léger.

Préparation

version


$ docker --version
Docker version 19.03.8, build afacb8b7f0

--La structure du fichier ressemble à ceci

organisation des fichiers


.
├── Dockerfile
├── docker-compose.yml
├── main.py
└── requirements.txt

La source

Vous pouvez cloner à partir d'ici https://github.com/sattosan/sample-fastapi-alpine

Dockerfile Fabriqué à base alpine

Dockerfile


FROM python:3.8-alpine

WORKDIR /app

ADD requirements.txt .
#Installez les packages requis dans le conteneur
RUN apk add --no-cache build-base mariadb-connector-c-dev
# requirements.Installez les packages Python répertoriés dans txt
RUN pip install --no-cache-dir --trusted-host pypi.python.org -r requirements.txt

ADD main.py .
#Attendez l'API rapide sur le 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

Nous avons rassemblé les packages nécessaires

requirements.txt


uvicorn
fastapi

Exemple de code

J'ai préparé l'exemple de code dans la documentation FastAPI (https://fastapi.tiangolo.com/)

main.py


from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}

Courir

$ docker-compose up -d --build

Vérification de la taille de l'image Docker

--Taille d'image basée sur l'alpin

docker images | grep api
latest              bff0158b61ca        29 minutes ago      275MB

C'est le résultat de la construction en référence à Honke.

$ docker images | grep api
latest              878110f2207f        11 seconds ago      1.02GB

Vous pouvez voir qu'il a été réduit de 3,6 fois par rapport à la famille d'origine

Contrôle de fonctionnement

Les API générées par FastAPI sont automatiquement documentées par Swagger

Jetez un œil à Swagger

Vous pouvez voir le document en accédant à domaine / docs

http://localhost:8000/docs

キャプチャ.PNG

Essayez d'accéder à l'API

Si vous le frappez avec curl, il reviendra comme ça

résultat


$ curl localhost:8000
{"Hello":"World"}

en conclusion

Cette fois, j'ai essayé de créer un environnement de développement léger basé sur l'alpin.

Il est 3,6 fois plus léger que la maison d'origine, donc je pense que c'est un environnement suffisant pour une utilisation jetable. Récemment, FastAPI a commencé à être utilisé dans divers projets, dont Netflix. Si vous ne l'avez pas encore utilisé, essayez-le!

Site de référence

--Honke: https://fastapi.tiangolo.com/

Recommended Posts

Créer un environnement de développement d'API rapide léger à l'aide de Docker
Créer un environnement go à l'aide de Docker
Créez un environnement de développement Flask à faible coût avec Docker
Créez un environnement d'API rapide avec docker-compose
[Python] Créer un environnement de développement Django avec Docker
Créer un environnement de développement Django à l'aide de pyenv-virtualenv sur Mac
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Créez un environnement de développement avec Poetry Django Docker Pycharm
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)
[Memo] Construire un environnement de développement pour Django + Nuxt.js avec Docker
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) avec PyCharm
Créez facilement un environnement de développement avec Laragon
Créer un environnement de développement local pour Lambda + Python à l'aide de Serverless Framework
[Linux] Créer un environnement Jenkins avec Docker
[DynamoDB] [Docker] Créer un environnement de développement pour DynamoDB et Django avec docker-compose
Créez un environnement LAMP sur votre Docker local
Créer un environnement de développement de langage C avec un conteneur
Créez un environnement de développement Python sur votre Mac
Créer un environnement de développement Django à l'aide de Doker Toolbox
Créer un environnement Kubernetes pour le développement sur Ubuntu
Créez un environnement de développement de plugins Minecraft avec Eclipse
Créer un environnement de développement mruby pour ESP32 (édition Linux)
Construire un environnement de développement Python sur Raspberry Pi
Créer un environnement de développement à l'aide de Jupyter et Flask avec Python dans Docker (prend en charge à la fois VS Code / code-server)
Flutter dans Docker - Comment créer et utiliser un environnement de développement Flutter dans un conteneur Docker
Créez un environnement de développement local avec WSL + Docker Desktop pour Windows + docker-lambda + Python
Créer un environnement de développement Python basé sur GVim sur Windows 10 (3) GVim8.0 et Python3.6
Créez un environnement de développement local pour Laravel6.X sur votre Mac
Créer un environnement de développement Python basé sur GVim sur l'installation de Windows 10 (1)
Comment créer un environnement Django (python) sur Docker
Je souhaite créer facilement un environnement de développement basé sur un modèle
Créer un environnement de développement Python sur Mac OS X
[Go + Gin] J'ai essayé de créer un environnement Docker
Créez un environnement Python sur votre Mac en utilisant pyenv
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Comment créer un environnement de développement pour TensorFlow (1.0.0) (Mac)
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) à l'aide de VS Code + Remote Containers
Créer un environnement LAMP [CentOS 7]
[ev3dev × Python] Construction de l'environnement de développement ev3dev
Créer un environnement d'apprentissage automatique
Créer un environnement Python hors ligne
Créer un environnement Docker qui peut utiliser PyTorch et JupyterLab
Création d'un environnement de développement Jupyter Lab sur WSL2 à l'aide d'Anaconda3
Construire un modèle seq2seq en utilisant la création et l'apprentissage du modèle d'API fonctionnelle de Keras
Créez un serveur Web API à une vitesse explosive en utilisant HUG
Créer un environnement de développement Python avec Eclipse (ajouter un éditeur HTML)
Créer un environnement de développement Python basé sur GVim sur les paramètres de base de Windows 10 (2)
Créez un environnement de développement confortable avec VSCode x Remote Development x Pipenv
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Créer une application Todo avec Django ① Créer un environnement avec Docker
Générer une image Docker à l'aide de Fabric
Remarques sur la création d'un environnement LAMP à l'aide de Vagrant et VirtulBox
Créer un environnement Chainer à l'aide de CUDA et cuDNN sur une instance p2
Créer un fichier deb avec Docker
Construire un environnement Mysql + Python avec docker
Essayez d'utiliser virtualenv qui peut créer un environnement virtuel de Python
Le moyen le plus simple de créer un environnement d'utilisation Spleeter à l'aide de Windows
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS