mkdir test_flask && cd test_flask python3 -m venv .venv source .venv/bin/activate pip install flask pip install uwsgi
app/app.py
from flask import Flask import datetime app = Flask(__name__) @app.route('/') def index(): now = datetime.datetime.now().strftime('%H:%M:%S.%f') return f'<h1>top page!({now})</h1>\n' @app.route('/sample') def sample(): now = datetime.datetime.now().strftime('%H:%M:%S.%f') return f'<h1>sample page!({now})</h1>\n'
参考
https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html
uwsgi起動
uwsgi --http :3031 --wsgi-file app/app.py --callable app
確認
curl http://localhost:3031/ top page!(13:35:03.767707)
Nginx を参照
default.conf
server { listen 80; server_name localhost; root /var/app; index index.html index.htm; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:3031; } }
Dockerfile
FROM ubuntu USER root RUN apt-get update && \ apt-get -y install software-properties-common && \ add-apt-repository -y ppa:jonathonf/python-3.6 && \ apt-get update && \ apt-get -y install nginx && \ apt-get -y install python3.6-dev && \ apt-get -y install python3-pip RUN ln -s /usr/bin/python3.6 /usr/bin/python RUN rm -rf /usr/bin/python3 && ln -s /usr/bin/python3.6 /usr/bin/python3 RUN pip3 install --upgrade pip && pip install flask && pip install uwsgi COPY app /var/app COPY default.conf /etc/nginx/conf.d/default.conf CMD ["/bin/bash", "/var/app/startup.sh"]
app/startup.sh
#!/bin/bash echo "## startup.sh ##" # アプリケーションディレクトリに移動 cd /var/app ls -l /var/app # uwsgi起動 echo "## start uwgsi ##" uwsgi --socket 127.0.0.1:3031 --chdir /var/app/ --wsgi-file app.py --callable app --master --processes 4 --threads 2 & # nginx起動 echo "## start nginx ##" nginx -g "daemon off;"