docker:dockerfile運行flask項目簡單demo


希望你對flask,uwsgi/gunicorn,docker有一定的知識基礎

1 創建flask應用

目錄下/data/www/test/testflask 

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'hello docker'

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

python  app.py 自己運行一遍確認沒問題

2  使用Gunicorn+Gevent運行Flask應用

pip install gunicorn gevent
編寫testflask/gunicorn.conf
workers = 5    # 定義同時開啟的處理請求的進程數量,根據網站流量適當調整
worker_class = "gevent"   # 采用gevent庫,支持異步處理請求,提高吞吐量
bind = "0.0.0.0:5000"    # 監聽IP放寬,以便於Docker之間、Docker和宿主機之間的通信

 利用gunicorn 啟動flask程序,確保你的程序運行正常:

下面的app:app意思是說腳本名稱是app,腳本里面的應用服務也是app

gunicorn -c gunicorn.conf app:app

3 使用Docker運行Flask應用

testflask/requirements.txt 內容有:

flask
gunicorn
gevent
編寫testflask/Dockerfile

FROM python:2.7 WORKDIR /usr/src/app COPY requirements.txt ./ COPY gunicorn.conf ./ RUN pip install --no-cache-dir -r requirements.txt CMD ["gunicorn", "app:app", "-c", "gunicorn.conf"]

 sudo docker build -t 'testflask'

 docker run -it --rm -p 5000:5000 testflask

4 實際情況非常復雜,要使用docker-compose 編排多純鏡像組成一組服務

下面是簡單的compose yaml腳本,位於testflask/docker-compose.yaml

web:
  build: .
  ports:
    - 5000:5000
  links:
    - redis
    - mongo
  working_dir: /app
  volumes:
    - .:/app
  command: python app.py

redis:
  image: redis:latest

mongo:
  image: mongo

執行腳本 docker-compose up -d 同樣的能達到一樣的效果










免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM