[PYTHON] Créer un service Web avec Docker + Flask

Créer un service Web avec Docker + Flask

introduction

Je vais le présenter à l'aide d'un exemple d'application (feedback-api).

`Ceci est un article sur l'environnement Mac, mais la procédure est la même pour l'environnement Windows. Veuillez lire et essayer la partie dépendant de l'environnement. ''

Objectif

Après avoir lu cet article jusqu'au bout, vous pourrez:

No. Aperçu mot-clé
1 paramètres du docker install, Dockerfile, docker-compose.yml
2 démarrer docker docker run, docker-compose up

Environnement d'exécution

environnement Ver.
macOS Catalina 10.15.3
Python 3.7.3
Docker 19.03.8

Code source

Je pense que vous pouvez approfondir votre compréhension en suivant réellement le contenu de l'implémentation et le code source. Veuillez l'utiliser par tous les moyens.

GitHub

Articles Liés

0. Environnement de développement

tree.sh


/
│── config/
├── app/
└── Dockerfiles/
     ├── app/
     │   ├── Dockerfile
     │   ├── docker-compose.yml
     │   └── entrypoint.sh
     ├── docker_compose_up.sh
     └── docker_run.sh

1. Installez docker

command_line.sh


~$ brew install docker
~$ brew cask install docker

2. Définition commune

2-1. Définition du Dockerfile

FROM python:3.7

RUN mkdir /code
WORKDIR /code

ADD entrypoint.sh /code/entrypoint.sh
ADD app/ /code

RUN pip install --upgrade pip --no-cache-dir
RUN pip install -r requirements.txt --no-cache-dir

EXPOSE 5000
ENV PYTHONPATH "${PYTHONPATH}:/code/"
ENV FLASK_APP "/code/run.py"
CMD ["/code/entrypoint.sh"]

2-2. Définition du point d'entrée

Dockerfiles/app/entrypoint.sh


#!/bin/sh

sleep 5

flask db init
flask db migrate
flask db upgrade

flask run --host=0.0.0.0 --port=5000

3. Lors de la connexion à RDB sur l'hôte local

docker(flask) <-> localhost(postgres)

3-0. Conditions préalables

Gardez postgres start sur localhost.

3-1. Sh Définition

Dockerfiles/docker_run.sh


#!/bin/sh

docker stop $(docker ps -q)
docker rm $(docker ps -q -a)
# docker rmi $(docker images -q) -f

rsync -av --exclude=app/tests* app Dockerfiles/app

docker build -t feedback-api Dockerfiles/app
docker run -it -p 5000:5000 feedback-api:latest

3-2. Exécution Sh

command_line.sh


Dockerfiles/docker_run.sh

4. Lors de la connexion au RDB du conteneur

docker(flask) <-> docker(postgres)

4-0. Conditions préalables

Faire des postgres sur localhost stop.

4-1. Sh Définition

Dockerfiles/docker_compose_up.sh


#!/bin/sh

docker stop $(docker ps -q)
docker rm $(docker ps -q -a)
# docker rmi $(docker images -q) -f

rsync -av --exclude=app/tests* app Dockerfiles/app

docker-compose -f Dockerfiles/app/docker-compose.yml up --build

4-2. Yml définition

Dockerfiles/app/docker-compose.yml


version: '3'
services:
  docker_postgres:
    image: postgres:11.5
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: feedback
      POSTGRES_INITDB_ARGS: --encoding=UTF-8

  app:
    build: .
    depends_on:
      - docker_postgres
    ports:
      - 5000:5000
    environment:
      ENV_CONFIG: docker
      SQLALCHEMY_POOL_SIZE: 5
      SQLALCHEMY_MAX_OVERFLOW: 10
      SQLALCHEMY_POOL_TIMEOUT: 30

4-3. Exécution Sh

command_line.sh


Dockerfiles/docker_compose_up.sh

Recommended Posts

Créer un service Web avec Docker + Flask
Créez une application Web simple avec Flask
Créer un serveur Flask avec Docker
Exécutez une application Web Python avec Docker
Flask-Créer un service Web avec SQLAlchemy + PostgreSQL
Démarrez un serveur Web Python simple avec Docker
Lancer un serveur Web avec Python et Flask
Développement d'applications Web avec Flask
Créer une page d'accueil avec django
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Retour sur la création d'un service Web avec Django 2
Créer une couche pour AWS Lambda Python dans Docker
Application Web avec Python + Flask ② ③
Créer un répertoire avec python
Application Web avec Python + Flask ④
[Linux] Créez un auto-certificat avec Docker et apache
Comment déployer une application Web créée avec Flask sur Heroku
Créez une application Web qui reconnaît les nombres avec un réseau neuronal
Créez une caméra de surveillance WEB avec Raspberry Pi et OpenCV
(Échec) Déployer une application Web créée avec Flask avec heroku
Créez un environnement de développement Python simple avec VSCode et Docker Desktop
Tornado - Créons une API Web qui renvoie facilement JSON avec JSON
Créer une application Todo avec Django ① Créer un environnement avec Docker
Créer une application Web avec Flask ②
Créer un fichier deb avec Docker
Déployer l'application Django avec Docker
Créer un service SlackBot sur Pepper
Créer une application Web avec Django
Créer une application Web avec Flask ①
Service mesh appris avec Docker Swarm
Créer une application Web avec Flask ③
Créez un stepper de poisson avec numpy.random
Créer une application Web avec Flask ④
Développement d'applications avec Docker + Python + Flask
Créer un téléchargeur de fichiers avec Django
Étapes pour configurer Pipenv, créer une application CRUD avec Flask et la conteneuriser avec Docker
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
[AWS Hands-on] Créons un service d'identification des célébrités avec une architecture sans serveur!
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Page de création de décalage)
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 3
Créer une image de conteneur Docker avec JRE8 / JDK8 sur Amazon Linux
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 4
Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant pyenv sur Ubuntu 12.04
Créer un décorateur de fonction Python avec Class
Créez une image factice avec Python + PIL.
Configurer un serveur Samba avec Docker
Jouez comme une application Web avec ipywidgets
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Créez un simulateur de gacha rare avec Flask
Créer une application graphique avec Tkinter de Python
Obtenez un environnement local pour DynamoDB avec Docker
Raclons un site dynamique avec Docker