[PYTHON] Erstellen Sie einen Webdienst mit Docker + Flask

Erstellen Sie einen Webdienst mit Docker + Flask

Einführung

Ich werde es mit einer Beispielanwendung (Feedback-API) vorstellen.

`Dies ist ein Artikel über die Mac-Umgebung, aber die Vorgehensweise ist für die Windows-Umgebung dieselbe. Bitte lesen und probieren Sie den umweltabhängigen Teil. ``

Zweck

Nachdem Sie diesen Artikel bis zum Ende gelesen haben, können Sie:

No. Überblick Stichwort
1 Docker-Einstellungen install, Dockerfile, docker-compose.yml
2 Docker starten docker run, docker-compose up

Ausführungsumgebung

Umgebung Ver.
macOS Catalina 10.15.3
Python 3.7.3
Docker 19.03.8

Quellcode

Ich denke, dass Sie Ihr Verständnis vertiefen können, indem Sie den Implementierungsinhalten und dem Quellcode tatsächlich folgen. Bitte benutzen Sie es auf jeden Fall.

GitHub

Zum Thema passende Artikel

0. Entwicklungsumgebung

tree.sh


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

1. Installieren Sie Docker

command_line.sh


~$ brew install docker
~$ brew cask install docker

2. Gemeinsame Definition

2-1. Dockerfile-Definition

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. Einstiegspunktdefinition

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. Wenn Sie eine Verbindung zu RDB auf dem lokalen Host herstellen

docker(flask) <-> localhost(postgres)

3-0. Voraussetzungen

Halten Sie postgres start auf localhost.

3-1. Sh Definition

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. Sh Ausführung

command_line.sh


Dockerfiles/docker_run.sh

4. Beim Anschließen an die RDB des Containers

docker(flask) <-> docker(postgres)

4-0. Voraussetzungen

Machen Sie Postgres auf localhost stop.

4-1. Sh Definition

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-Definition

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. Sh Ausführung

command_line.sh


Dockerfiles/docker_compose_up.sh

Recommended Posts

Erstellen Sie einen Webdienst mit Docker + Flask
Erstellen Sie eine einfache Web-App mit Flasche
Erstellen eines Flask-Servers mit Docker
Führen Sie eine Python-Webanwendung mit Docker aus
Flask-Erstellen Sie einen Webdienst mit SQLAlchemy + PostgreSQL
Starten Sie mit Docker einen einfachen Python-Webserver
Starten Sie einen Webserver mit Python und Flask
Entwicklung von Webanwendungen mit Flask
Erstellen Sie eine Homepage mit Django
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Rückblick auf die Erstellung eines Webdienstes mit Django 2
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Webanwendung mit Python + Flask ② ③
Erstellen Sie ein Verzeichnis mit Python
Webanwendung mit Python + Flask ④
[Linux] Erstellen Sie ein Selbstzertifikat mit Docker und Apache
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
Erstellen Sie eine Web-App, die Zahlen mit einem neuronalen Netzwerk erkennt
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
Tornado - Erstellen wir eine Web-API, die JSON problemlos mit JSON zurückgibt
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Erstellen einer Webanwendung mit Flask ②
Erstellen Sie eine Deb-Datei mit Docker
Stellen Sie die Django-Anwendung mit Docker bereit
Erstellen Sie einen SlackBot-Dienst für Pepper
Erstellen Sie eine Webanwendung mit Django
Erstellen einer Webanwendung mit Flask ①
Service Mesh mit Docker Swarm gelernt
Erstellen einer Webanwendung mit Flask ③
Erstellen Sie einen Poisson-Stepper mit numpy.random
Erstellen einer Webanwendung mit Flask ④
Anwendungsentwicklung mit Docker + Python + Flask
Erstellen Sie mit Django einen Datei-Uploader
Schritte zum Einrichten von Pipenv, Erstellen einer CRUD-App mit Flask und Containerisieren mit Docker
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
[AWS Hands-on] Erstellen wir einen Promi-Identifikationsdienst mit einer serverlosen Architektur!
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schichterstellungsseite)
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Erstellen Sie ein Docker-Container-Image mit JRE8 / JDK8 unter Amazon Linux
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie mit Python + PIL ein Dummy-Image.
Richten Sie mit Docker einen Samba-Server ein
Spielen Sie wie eine Web-App mit ipywidgets
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Machen Sie einen seltenen Gacha-Simulator mit Flask
Erstellen Sie eine GUI-App mit Tkinter of Python
Holen Sie sich mit Docker eine lokale Umgebung für DynamoDB
Lassen Sie uns mit Docker eine dynamische Site kratzen