[PYTHON] Créez un environnement d'API rapide avec docker-compose

FastAPI?

C'est un framework Web Python moderne et rapide. Il semble être populaire récemment, alors je l'ai adopté pour les affaires.

Documentation officielle https://github.com/tiangolo/fastapi

L'environnement était différent selon les membres et l'introduction ne pouvait pas se dérouler sans heurts, Ceci est un mémo car tout le monde peut désormais partager le même environnement de travail en utilisant Docker.

Fichier créé

Nous procéderons selon la procédure officielle.

C'est OK si la structure finale du fichier est comme ça. Super simple. スクリーンショット 2020-03-30 16.30.06.png

Dockerfile

Installez les modules répertoriés dans la section Installation de la documentation officielle. Il fonctionne tout seul une fois construit, c'est donc pratique car vous n'avez pas à rechercher manuellement le module requis.

Dockerfile


FROM python:3.7
WORKDIR /var/www/html
RUN pip install fastapi uvicorn

main.py

Ceci est également écrit en référence à l'élément de Exemple. C'est une API qui renvoie des objets Hello World lors de l'accès à la racine.

main.py


from fastapi import FastAPI

app = FastAPI()

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

docker-compose.yaml

Il agit comme un pont entre Dockerfile et main.py.

Après avoir installé le module Python à l'aide du Dockerfile Reportez-vous à l'élément Exécuter et appuyez sur la commande pour démarrer le serveur Fast API.

Ici, il est configuré pour démarrer sur le port 9004.

docker-compose.yaml


version: '3'

services:
  app:
    container_name: FastAPI
    build: ./docker
    volumes:
      - ./src:/var/www/html
    ports:
      - "9004:9004"
    command: uvicorn main:app --reload --host 0.0.0.0 --port 9004

Contrôle de fonctionnement

Démarrez et créez le conteneur avec docker-compose.

$ docker-compose up --build

Creating network "docker_fastapi_default" with the default driver
Building app
Step 1/3 : FROM python:3.7
 ---> 879165535a54
Step 2/3 : WORKDIR /var/www/html
 ---> Using cache
 ---> 31d5c58e6177
Step 3/3 : RUN pip install fastapi uvicorn
 ---> Using cache
 ---> 430430eecf7f
Successfully built 430430eecf7f
Successfully tagged docker_fastapi_app:latest
Creating FastAPI ... done
Attaching to FastAPI
FastAPI | INFO:     Uvicorn running on http://0.0.0.0:9004 (Press CTRL+C to quit)
FastAPI | INFO:     Started reloader process [1]
FastAPI | INFO:     Started server process [7]
FastAPI | INFO:     Waiting for application startup.
FastAPI | INFO:     Application startup complete.

Les modules requis ont été installés et le serveur Fast API a démarré.

Accédons-y avec la commande curl.


$ curl http://localhost:9004

{"Hello":"World"}

Réaction telle que définie dans main.py!

Résumé

Vous pouvez facilement configurer un serveur API en utilisant FastAPI! C'est bien de pouvoir partager le même environnement avec moins de fichiers en utilisant Docker: sparkles:

Puisque vous pouvez également exécuter des scripts shell en Python, Il est pratique d'implémenter des commandes de déploiement automatique et de faire quelque chose comme "pseudo Jenkins". ~~ Ne dites pas que vous devriez utiliser Jenkins ~~

URL de référence

Recommended Posts

Créez un environnement d'API rapide avec docker-compose
Créer un environnement de développement d'API rapide léger à l'aide de Docker
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)
Créez facilement un environnement de développement avec Laragon
Créer un environnement Tensorflow avec Raspberry Pi [2020]
[Linux] Créer un environnement Jenkins avec Docker
Créez un environnement virtuel pour python avec pyenv
Créez un environnement Python moderne avec Neovim
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
[DynamoDB] [Docker] Créer un environnement de développement pour DynamoDB et Django avec docker-compose
environnement python avec docker-compose
Créez un environnement WardPress sur AWS avec Pulumi
Créer un environnement de construction python3 avec Sublime Text3
Créez un environnement Django avec Vagrant en 5 minutes
[Memo] Créez un environnement virtuel avec Pyenv + anaconda
Créez un environnement virtuel avec pyenv et venv
Créer un environnement de développement Django à l'aide de Doker Toolbox
Construire un environnement Python avec OSX Elcapitan
Créez rapidement un environnement Python Django avec IntelliJ
Créer un environnement d'apprentissage automatique Python avec des conteneurs
Créer un environnement d'exécution python avec VS Code
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créez un environnement python pour chaque répertoire avec pyenv-virtualenv
Créer un environnement python3 avec ubuntu 16.04
Construire un environnement python avec direnv
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créer un environnement d'apprentissage automatique
Créer un environnement Python hors ligne
Créez un environnement de développement avec Poetry Django Docker Pycharm
Créer un environnement django avec docker-compose (MariaDB + Nginx + uWSGI)
Construire un environnement Django pour Win10 (avec espace virtuel)
Construire un environnement de calcul numérique avec pyenv et miniconda3
Créez un environnement d'analyse de données avec Kedro + MLflow + Github Actions
Créer des pipelies Azure avec Azure DevOps dans un environnement auto-hébergé Linux
[Memo] Construire un environnement de développement pour Django + Nuxt.js avec Docker
Créez un environnement de développement Go avec les conteneurs distants de VS Code
(Maintenant) Construisez un environnement GPU Deep Learning avec GeForce GTX 960
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) avec PyCharm
Créez un environnement de développement confortable avec VSCode x Remote Development x Pipenv
Créez un serveur API Web ultra-rapide avec Falcon
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Créer un environnement python avec pyenv (OS X El Capitan 10.11.3)
Créer une application Todo avec Django ① Créer un environnement avec Docker
Créez un environnement LAMP avec Vagrant (Linux + Apache + MySQL + PHP)
Créer un environnement Python avec WSL + Pyenv + Jupyter + VSCode
[Note d'étude] Créez un serveur de tuiles vectorielles GeoJSON avec Fast API
Créer un environnement Kubernetes avec Ansible 2
Construisez FastAPI + uvicorn + nginx avec docker-compose
Créer un environnement go à l'aide de Docker
Créer un fichier deb avec Docker
Construire un environnement Mysql + Python avec docker
Créez un environnement virtuel avec Python!
Créer un environnement virtuel avec Python 3
Créer un environnement Flask avec Dockerfile + docker-compose.yml
Créer une application Web avec Django
Créer un environnement de notebook IPython avec boot2docker
Créer un environnement python3 sur CentOS7
Créer un environnement Kubernetes avec Ansible 1