3

利用Docker部署Flask应用

1.首先准备一个小型的flask应用,如下。够简单吧!注意本次部署没有涉及到数据库及nginx代理等,实际情况下,应该是将这些服务部署到不同的服务器中。

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return app.send_static_file('index.html')


if __name__ == '__main__':
    app.run()
<!-- index.html文件内容 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>
    <h1>hello world!</h1>
</body>
</html>

2.在项目目录下创建并编写Dockerfile文件,名字不能错啊。由于这个flask应用涉及的python包比较少,就没有制作requirements.txt文件。以下是项目目录结构与Dockerfile文件的内容:

  • COPY:COPY时,只将文件夹内容拷贝至WORKDIR中,不会拷贝flaskapp这个文件夹
  • EXPOSE:对外暴露5000端口
  • CMD:容器运行时执行shell的命令,这里使用gunicorn作为wsgi服务器

alt 目录结构

FROM python:3.8
WORKDIR /flask_test
COPY flaskapp .
RUN pip install flask gunicorn gevent
EXPOSE 5000
CMD gunicorn -w 2 app:app

3.shell终端cd到flask_test目录下,首先执行创建镜像命令。创建成功后,根据镜像,将容器运行起来。

docker build -t flask_app .
docker run -it --name flask_container -p 5000:5000 flask_app

执行结果如下:

build镜像

启动容器

4.此时在浏览器输入:127.0.0.1:5000,即可访问到容器内的flask应用了。

访问flask


SyntaxError
199 声望19 粉丝