Flask с Doker.

Створимо стартову сторінку index.html і покладемо її до папки templates.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Docker Flask</title>
</head>
<body>
  <h2>Hello from Flask container</h2>
</body>
</html>

Створимо файл із залежностями requirements.txt.

Flask

Створимо файл Dockerfile

FROM python:3.6
RUN mkdir /app
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
RUN apt update
RUN pip install -r requirements.txt

Створимо збирач docker-compose.yaml.

version: '3.5'
services: 
    flask:
        build: 
            context: .
            dockerfile: Dockerfile-flask
        volumes:
            - .:/app

Створимо скрипт для запуску start.py.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')

Додамо прокидання портів.

ports:
    - 8082:5000

Додамо команду запуску.

CMD python start.py

Додамо рендеринг шаблону.

from flask import render_template

@app.route('/')
def hello_world():
    return render_template('index.html')

Проксіювання через nginx.

Створюємо файл для образу Dockerfile-nginx

FROM nginx:latest
RUN mkdir /app
COPY ./default.conf /etc/nginx/conf.d/default.conf

Конфігураційний файл.

server { 
     listen 80;
     server_name localhost;
     location / {
       proxy_pass http://flask:5000;
     }
}

Додаємо контейнер до збирача.

nginx:
    build: 
        context: .
        dockerfile: Dockerfile-nginx
    volumes:
        - .:/app
    ports:
        - 8084:80

Проксуємо статику.

<img src="/static/test.png" />

Додаємо шлях до статики у default.conf.

   ...

  location /static/ {
      alias /app/static/;
  }

   ...