Développement d'applications avec Docker + Python + Flask

Dernière fois: Dockerize à l'aide du projet créé dans Se connecter à MySQL à l'aide de Flask SQL Alchemy.

Dockerize

organisation des fichiers

├── api
├── app.py
├── config.py
|
├── requirements.txt
├── Dockerfile
└── docker-compose.yaml

requirements.txt


flask
SQLAlchemy
Flask-SQLAlchemy
PyMySQL

Dans requirements.txt, écrivez les modules qui doivent être installés.


FROM python:3.8-alpine

ADD requirements.txt /var/www/html/tool/
WORKDIR /var/www/html/tool
RUN pip3 install -r requirements.txt

docker-compose.yaml


version: '3'
services:
  api:
    build: .
    container_name: tool-api
    volumes:
      - ~/path/tool-api:/var/www/html/api
    ports:
      - 5000:5000
    tty: true
    command: flask run --host 0.0.0.0 --port 5000
    external_links:
      - "db:db"

networks:
  default:
    external:
      name: db_default

Cette fois, je me connecte à mysql dans un autre conteneur.

Courir

$ docker-compose up

Fichier statique

organisation des fichiers

├── api
├── app.py
├── config.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yaml
|
├── nginx
|   ├── Dockerfile
|   └── nginx.conf
└── statics
    └── css
        └── sample.css

Créer un fichier docker nginx

/nginx/Dockerfile


FROM nginx
CMD ["nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]

nginx.conf


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    keepalive_timeout  75;

    upstream flask_server {
        server tool-api:5000 fail_timeout=0;
    }

    #Paramètres du serveur
    server {
        location /statics/ {
            alias /var/www/;
        }
        
        location / {
            try_files $uri @proxy_to_api;
        }
        
        location @proxy_to_api {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_redirect off;
            proxy_pass http://flask_server;
        }
    }
}

L'accès à / statics amènera nginx à accéder au fichier / var / www /.

Correction du fichier docker-compose

docker-compose.yaml


version: '3'
services:
  nginx:
    build: ./nginx
    container_name: tool-nginx
    volumes:
      - ./statics/:/var/www/
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    ports:
      - 80:80
    depends_on: 
      - tool-api
  api:
    build: .
    container_name: tool-api
    volumes:
      - ~/path/tool-api:/var/www/html/api
    ports:
      - 5000:5000
    tty: true
    command: flask run --host 0.0.0.0 --port 5000
    external_links:
      - "db:db"

networks:
  default:
    external:
      name: db_default

Courir

$ docker-compose up

Recommended Posts

Développement d'applications avec Docker + Python + Flask
Développement d'applications Web avec Flask
Application Web avec Python + Flask ② ③
Application Web avec Python + Flask ④
Exécutez une application Web Python avec Docker
Lancez l'application Flask avec Docker sur Heroku
Utiliser python avec docker
Programmation avec Python Flask
[Python] Créer un environnement de développement Django avec Docker
Préparer l'environnement python3 avec Docker
Créer une application Rails avec Docker
Construction d'environnement virtuel avec Docker + Flask (Python) + notebook Jupyter
[Mac OS] Utilisez Kivy avec PyCharm! [Développement d'applications Python]
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Un mémo sur la création d'une application Django (Python) avec Docker
Modèle de construction d'environnement de développement local Python [Flask / Django / Jupyter avec Docker + VS Code]
Bases de SNS Python faites avec Flask
Créer un serveur Flask avec Docker
Construire un environnement Mysql + Python avec docker
Déployer l'application Django avec Docker
Surveillez les performances des applications Python avec Dynatrace ♪
J'ai créé une application de livre simple avec python + Flask ~ Introduction ~
Développement de jeux Othello avec Python
Créez un environnement de développement Python simple avec VSCode et Docker Desktop
Configurer un environnement de développement Python avec Atom
Reconstruisez l'environnement de développement de Django avec Docker! !! !! !!
Application de Python: Nettoyage des données Partie 2: Nettoyage des données à l'aide de DataFrame
Développement d'applications IOS avec Python (kivy) que même les singes peuvent faire
Créer un environnement Jupyter Lab (Python) avec Docker
[Environnement de développement] Python avec Xcode [Avec transition d'écran]
Derrière le flyer: utiliser Docker avec Python
POSTER diversement avec Python et recevoir avec Flask
Connectez-vous à MySQL avec Python dans Docker
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
[Python] Une application web rapide avec Bottle!
Développement d'applications à l'aide de SQLite avec Django (PTVS)
Application Web facile avec Python + Flask + Heroku
Utiliser Application Insights avec Python 3 (y compris les bouteilles)
[Python] Créez rapidement une API avec Flask
Environnement de lancement avec LineBot + Heroku + Docker + Python
Comment installer python3 avec docker centos
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Introduction au développement de flacons
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
Paramètres de l'application Flask
python commence par ()
avec syntaxe (Python)
[GCP] Procédure de création d'une application Web avec Cloud Functions (Python + Flask)