现成的镜像,已经配置好nginx-gunicorn-flask,可直接部署flask 项目
- 直接部署flask项目
安装镜像
- 如果默认源比较慢,可以换成163镜像源
http://hub-mirror.c.163.com
docker pull danriti/nginx-gunicorn-flask
运行镜像,将flask项目映射到容器
- 映射项目到容器
/usr/share/nginx/www/
这个是nginx默认的目录- -P --expose 90 这里指定容易要映射出来的端口为80
docker run -it -P --expose 80 --name gunicorn1 -v $PWD/flaskDemo2:/usr/share/nginx/www/flaskDemo2 danriti/nginx-gunicorn-flask
- 映射日志到本机
/var/log/nginx
这个是nginx日志目录,可以映射出来docker run -it -P --expose 80 --name gunicorn2 -v $PWD/flaskDemo2:/usr/share/nginx/www/flaskDemo2 -v $PWD/log:/var/log/nginx danriti/nginx-gunicorn-flask
进入镜像
docker exec -it gunicorn1 bash
- 查看flask项目
cd /usr/share/nginx/www/flaskDemo2
- 如果一切正常,可以直接运行项目,但是外部不能直接访问
手动运行项目
gunicorn -w 4 -b wsgi:app
默认访问路径 http://127.0.0.1:8000/wsgi 是文件名,app是入口
app = Flask(__name__)
# -*- coding:utf-8-*-
# wsgi.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "name"
@app.route("/register")
def register():
return "hello register"
if __name__ == '__main__':
app.run()
配置nginx
- 如果要在外部访问,要配置nginx
/etc/nginx/sites-available/
目录下有配置文件 flask.conf- 将80端口的访问转发到8000
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
手动运行项目
- 启动容器后,进入项目目录,手动运行项目就行
- gunicorn -w 4 -b wsgi:app
TODO: 有时间研究一下自动启动项目