Основи роботи з Linux. / Початок роботи з Doker. / Flask с Doker.
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/;
}
...