1、创建一个文件夹testflask。 写一个Flask应用如下:
testflask/app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'hello docker&flask'
if __name__ == '__main__':
app.run(debug=True)
2、使用Gunicorn+Gevent运行Flask应用
我们知道,Flask应用是一个符合WSGI规范的Python应用,不能独立运行(类似app.run的方式仅适合开发模式),需要依赖其他的组件提供服务器功能。在这里,我们选择Gunicorn+Gevent的组合。 安装命令如下:
pip install gunicorn gevent
书写Gunicorn的配置文件如下:
testflask/gunicorn.conf.py
workers = 5 # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
worker_class = "gevent" # 采用gevent库,支持异步处理请求,提高吞吐量
bind = "0.0.0.0:8888" # 监听IP放宽,以便于Docker之间、Docker和宿主机之间的通信
可以使用gunicorn命令来测试是否可以正确运行,命令如下:
gunicorn app:app -c gunicorn.conf.py
一旦报错,则根据错误提示修复。
3、使用Docker运行Flask应用
创建一个requirements.txt文件
flask
gunicorn
gevent
4、创建一个Dockerfile文件,以便Docker镜像的构建: ```testflask/Dockerfile``
FROM python:3.6
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "app:app", "-c", "./gunicorn.conf.py"]
5、个文件的创建之后,进入
testflask目录下执行如下命令,就可以开始构建Docker镜像:(注:其中test是别名)
docker build -t test .
6、查看容器
docker images
7、运行容器
docker run -id --rm -p 8888:8888 testflask