完整Python使用docker打包部署flask項目(flask+gunicorn+gevent)

環境:Ubuntu16.04,docker
【編者物語】:
本人還奔走在學習的道路上,對一下有疑問這歡迎留言探討。大佬勿噴請繞行python

目錄結構:web

.
├── app_flask.py
├── Dockerfile
├── gunicorn.conf.py
└── requirements.txt

一、建立文件夾docker_flaskdocker

mkdir docker_flask

在這裏插入圖片描述
二、建立appflask

sudo vim app_flask.py

添加代碼:vim

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(debug=True)

在這裏插入圖片描述
三、模擬開發環境的依賴包(這裏安裝了flask+gevent+gunicorn)導出依賴bash

pip freeze > requirements.txt

在這裏插入圖片描述
在這裏插入圖片描述

四、編寫gunicorn配置文件gunicorn.conf.py文件app

sudo vim gunicorn.conf.py

添加一下代碼:svg

workers = 5
worker_class = "gevent"
bind = "0.0.0.0:8080"

在這裏插入圖片描述
六、跑一下剛纔的程序,看是否正常post

python app_flask.py

在這裏插入圖片描述在這裏插入圖片描述

使用postman測試了一下是正常的學習

六、這裏最重要,編寫dockerfile文件

先借一張圖介紹一下 dockerfile
在這裏插入圖片描述

sudo vim Dockerfile

添加一下代碼:

FROM python:3
MAINTAINER WuJian_Home
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "app_flask:app", "-c", "./gunicorn.conf.py"]


如下不用添加
解釋一下參數:
FROM   # 指明你建立的鏡像,他的基礎鏡像是誰
MAINTAINER  # 維護者信息
COPY  # 將宿主機的文件cp到建立的鏡像當前路徑下
RUN  # 你須要在建立鏡像以前,須要執行的命令
CMD  # 建立容器後執行的第一個命令

在這裏插入圖片描述
七、製做docker image
我這裏鏡像的名字直接作成flask_demo了

docker build -t flask_demo:1.0 .

在這裏插入圖片描述

製做完成了,能夠看到仍是蠻大的,接下來就是使用它了

docker image ls -a | grep flask_demo
docker images | grep flask_demo

兩個命令同樣,喜歡用哪個看你本身啊

在這裏插入圖片描述

七、使用testflask
建立

docker run -it --name=flask_app -p 5001:8080 flask_demo:1.0

解釋一下參數
--name   # 是給你建立的容器起一個名字,在後續進行容器操做的時候能夠直接使用名字,不用在使用id
-p   # 將宿主機的端口映射到容器中

在這裏插入圖片描述
正常訪問:
在這裏插入圖片描述
ctrl+c強制結束了:

docker ps -a | grep flask_app
docker container ls -a | grep flask_app

兩個命令同樣啊,用哪一個均可以

在這裏插入圖片描述
再次啓動:

docker container start flask_app

在這裏插入圖片描述

再次訪問:依然正常
在這裏插入圖片描述

進入容器中看看:

docker exec -it flask_app /bin/bash

在這裏插入圖片描述
ls下看看咱們的文件都在
在這裏插入圖片描述
八、製做成爲tar,這樣就能夠發佈到任何一臺安裝過docker的機器,我這裏命名爲flask_image.tar用於區別

docker save -o flask_image.tar flask_demo:1.0

製做完成,沒有任何提示
在這裏插入圖片描述
打開看一下(這個命令是打開當前路徑的文件夾)

nautilus ./

能夠看到文件是存在的
在這裏插入圖片描述
九、載入
下邊這個文件,你能夠添加絕對路徑來導入,我是因爲就在當前路徑下,直接這樣寫了

docker load --input flask_image.tar

是載入成功的,因爲我以前的鏡像沒有刪除,這裏沒有區別開
在這裏插入圖片描述

到此,flask項目使用docker就完整完成了

相關文章
相關標籤/搜索