Docker danriti/nginx-gunicorn-flask 使用

現成的鏡像,已經配置好nginx-gunicorn-flask,可直接部署flask 項目nginx

  • 直接部署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/docker

  • wsgi 是文件名,app是入口 app = Flask(__name__)flask

# -*- 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: 有時間研究一下自動啓動項目bash

相關文章
相關標籤/搜索