flask后台部署套路(二)

一般情况下是不会使用flask这个内部的服务器来运行项目的,官方建议实际生产环境中使用中间件来运行项目。
gunicorn
官方文档:(起源于Ruby的独角兽(Unicorn)项目移植)
http://docs.gunicorn.org/en/latest/install/html

是一款广受欢迎的WSGI服务器
WSGI:Web Server Gateway interface,web服务器网关接口,它本身是一个接口标准

有了这个接口标准和对应实现这些标准的服务器软件,我们就只需要专注业务代码编写,不需要关心tcp层、http协议等处理

其中gunicorn就是其中一款(python内置的也有wsgiref,请忽略,不可能用的)

  • 老规矩,先整一个测试容器出来
docker run -it --rm myflask:1.0 sh

这个myflask:1.0是上节课做的镜像,具体里面有啥仔细看上文内容

  1. 安装gunicorn
pip install gunicorn
  1. 进入到课程一创建好的/app文件夹内部
  2. 创建mytest.py并且放入代码
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "hello world"

@app.route("/abc")
def abc():
    return "hello abc"

注意这里和上文的差别,以前的东西就可以直接裸机跑,但是现在不是使用python 和flask指令来运行这个代码的。
4. 使用gunicorn来运行

gunicorn -w 2 -b 0.0.0.0:5000 mytest:app

大致说一下这里 -w 2 两个进程,-b 0.0.0.0:5000启动端口,mytest:app,启动的python的文件名叫mytest,app是这个文件里面的app=flask(name)
5. 启动之后进入另外一个Xshell窗口,进入到容器

docker execc -it 容器id sh
  1. 安装curl
apk add curl
  1. 试着使用curl来访问localhost
  • 以上就是使用了gunicorn来运行一个flask小文件,接下来使用Dockerfile来制作镜像可以直接配置完的容器。
  1. ~目录下创建flask1.1,并进入
mkdir flask1.1
cd flask1.1
  1. 创建Dockerfile文件并在上节课的基础上 再次修改镜像书写Dockerfile
FROM myflask:1.0
RUN pip install gunicorn
ENV start_param index:app
WORKDIR /app
CMD gunicorn -w 2 -b 0.0.0.0:5000 $start_param

1-2行不解释了,3行是为了第5行服务的,第5行使用了一个 $start_param的参数,所以第3行使用了一个变量名为start_param的环境变量,到时候在运行容器的时候传参处理,第4行是说第5行的命令会在第4行声明的这个工作区域内运行。
3. 构建镜像

docker build -t myflask:1.1 .

此时测试环境下的所有环境已经搭建好了,除了没有运行的mytest.py之外
4. 在linux机器的/myapp路径下创建一个mytest.py

from flask import Flask
myapp = Flask(__name__)

@myapp.route("/")
def hello():
    return "hello flask1.1"

@myapp.route("/abc")
def abc():
    return "hello abc1.1"
  1. 开始运行
docker run --name myapp -d -p 8081:5000 -v /root/myapp:/app -e start_param=mytest:myapp myflask:1.1

注意--name后面的myapp名字别重复了

posted @ 2020-05-08 18:17  南风有时起  阅读(233)  评论(0编辑  收藏  举报