手把手教如何在Docker中部署flask项目

一、安装环境

python3.6

centos7

django2.0

docker

警告:切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装
Docker.
 

二、安装docker

 1、安装gcc
yum -y install gcc

2、安装gcc-c++

yum -y install gcc-c++

3、安装其他安装包

yum install -y yum-utils device-mapper-persistent-data lvm2

4、安装阿里云安装依赖包。

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

此处我还出现过以下这种错误,是因为我电脑上有多个版本得python环境。

  File "/bin/yum-config-manager", line 159
    print yb.fmtSection('main')
           ^
SyntaxError: invalid syntax


只需要将第一行改为

#!/usr/bin/python2.7

5、安装dockerCE


sudo yum makecache fast
sudo yum -y install docker-ce

6、开启docker

sudo service docker start

三、创建flask项目。

   1、构建一个简易版的web,创建一个空的项目目录。目录结构如图:

    创建一个start.py启动文件,代码如下:

from flask import Flask

app = Flask(__name__) #记住这里的变量名app

@app.route('/')
def hello():
    return 'hello docker&flask'

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

输入下面命令可以测试一下是否能正常跑起来,(必须在同级目录下的命令行输入)输入curl http://127.0.0.1:5000看到打印内容就算成功。

python start.py

  2、安装Gunicorn + Gevent

    guincorn是支持wsgi协议的http server,gevent只是它支持的模式之一 ,是为了解决django、flask这些web框架自带wsgi server性能低下的问题。它的特点是与各个web框架结合紧密,部署特别方便。

pip install gunicorn gevent

  在创建目录下新建gunicorn.conf.py

workers = 5    # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
worker_class = "gevent"   # 采用gevent库,支持异步处理请求,提高吞吐量
bind = "0.0.0.0:80"   #端口随便写,但是注意是否已经被占用。netstap -lntp

   启动gunicorn,测试是否能正常跑起来

gunicorn start:app -c gunicorn.conf.py

7、制作镜像

1、在同级目录下创建requirements.txt

   用来构建项目所需要的运行环境依赖

gunicorn
gevent
flask

2、在同级目录下创建dockerfile文件

在创建目录下新建一个dockerfile(建议名字就叫这个)

# 1、第一行必须指定   基础镜像信息
FROM python:3.6   #FROM 必须 是 Dockerfile 中第一条非注释命令

WORKDIR /var/www/html/your/project/   #指定工作目录

COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
#安装依赖
COPY . .

CMD ["gunicorn", "start:app", "-c", "./gunicorn.conf.py"]  #用于指定默认的容器主进程的启动命令

3、构建docker镜像(名字随意)

sudo docker build -t 'dockerName' .  #我的叫docker_flask_web

可使用docker images查看镜像

4、将镜像推送到docker.

   a、去官网地址创建一个docker账号,记住账号名

   b、使用docker images找到本地镜像信息, 选择需要使用的镜像名称,我这里选择docker_flask_web:latest, 免得麻烦线上我也使用这个名字。

 docker tag  docker_flask_web:latest 账号名/线上标签名:latest    

5、登录docker,输入账号密码

docker login

6、push上docker hub,成功之后可以登录docker网站查看是否已经存在。

docker push 账号名/线上名称:latest

7、pull下载到自己服务器

docker pull 账号名/线上名称:latest

如果很慢的话可以使用阿里云的加速,登陆阿里云镜像加速找到自己的加速地址,添加至/etc/docker/deamon.json

{
  "registry-mirrors": ["阿里云加速器地址"]
}

8、临时运行docker镜像

sudo docker run -it --rm -p 80:80 docker_flask_web

可以看到Docker镜像成功地运行起来了,并处于阻塞状态。那么到这里 Flask 项目已经成功部署。

注:

列出本地实例:   docker images

删除镜像 :  docker image rm 镜像名:标签名

查看容器:   docker container ls -a

查看当前运行容器:   docker ps

停止容器:   docker stop $CONTAINER_ID

参考博客:

https://yq.aliyun.com/articles/110806

https://blog.csdn.net/li1325169021/article/details/90780627

https://zhuanlan.zhihu.com/p/78432719

https://yeasy.gitbooks.io/docker_practice/image/pull.html

猜你喜欢

转载自blog.csdn.net/hard_days/article/details/103423188
今日推荐