Anwendungsentwicklung mit Docker + Python + Flask

Letztes Mal: Dockerisieren Sie mit dem Projekt, das in Mit Flask SQL Alchemy mit MySQL verbinden erstellt wurde.

Dockerize

Dateiorganisation

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

requirements.txt


flask
SQLAlchemy
Flask-SQLAlchemy
PyMySQL

Schreiben Sie in die Datei require.txt die Module, die installiert werden müssen.


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

Dieses Mal verbinde ich mich mit MySQL in einem anderen Container.

Lauf

$ docker-compose up

Statische Datei

Dateiorganisation

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

Erstellen Sie eine Nginx-Docker-Datei

/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;
    }

    #Server Einstellungen
    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;
        }
    }
}

Wenn Sie auf / statics zugreifen, wechselt nginx in die Datei / var / www /.

Docker-Compose-Datei behoben

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

Lauf

$ docker-compose up

Recommended Posts

Anwendungsentwicklung mit Docker + Python + Flask
Entwicklung von Webanwendungen mit Flask
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④
Führen Sie eine Python-Webanwendung mit Docker aus
Starten Sie die Flask-Anwendung mit Docker auf Heroku
Verwenden Sie Python mit Docker
Programmieren mit Python Flask
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Bereiten Sie die Python3-Umgebung mit Docker vor
Erstellen Sie eine Rails-Anwendung mit Docker
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
[Mac OS] Verwenden Sie Kivy mit PyCharm! [Python-Anwendungsentwicklung]
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Konstruktionsvorlage für die lokale Python-Entwicklungsumgebung [Flask / Django / Jupyter mit Docker + VS-Code]
Mit Flask erstellte SNS Python-Grundlagen
Erstellen eines Flask-Servers mit Docker
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Stellen Sie die Django-Anwendung mit Docker bereit
Überwachen Sie die Leistung von Python-Anwendungen mit Dynatrace ♪
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Othello-Spieleentwicklung mit Python
Erstellen Sie mit VSCode & Docker Desktop eine einfache Python-Entwicklungsumgebung
Richten Sie mit Atom eine Python-Entwicklungsumgebung ein
Erstellen Sie die Entwicklungsumgebung von Django mit Docker neu! !! !! !!
Anwendung von Python: Datenbereinigung Teil 2: Datenbereinigung mit DataFrame
IOS-Anwendungsentwicklung mit Python (kivy), die selbst Affen können
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
[Entwicklungsumgebung] Python mit Xcode [Mit Bildschirmübergang]
Hinter dem Flyer: Docker mit Python verwenden
POST verschieden mit Python und empfange mit Flask
Stellen Sie mit Python in Docker eine Verbindung zu MySQL her
Verwenden Sie die Verschlüsselung der Verschlüsselungsbibliothek mit dem Python-Image von Docker
[Python] Eine schnelle Webanwendung mit Bottle!
App-Entwicklung mit SQLite mit Django (PTVS)
Einfache Web-App mit Python + Flask + Heroku
Verwenden Sie Application Insights mit Python 3 (einschließlich Flaschen).
[Python] Erstellen Sie schnell eine API mit Flask
Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python
So installieren Sie Python3 mit Docker Centos
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Einführung in die Kolbenentwicklung
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Einstellungen der Kolbenanwendung
Python beginnt mit ()
mit Syntax (Python)
[GCP] Verfahren zum Erstellen einer Webanwendung mit Cloud-Funktionen (Python + Flask)