完整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就完整完成了

相关文章
相关标签/搜索