网上大部分关于Docker部署Flask项目的教程,都没告知需要在Linux环境下部署,所以会导致整个教程看下来,在windows系统实操,都是失败的。
第一步,在自己的windows系统安装个linux虚拟机。(具体教程自行网上搜索)
第二步,在linux系统安装docker
Centos安装docker的教程:Linux CentOS安装docker
Debian安装docker的教程:Debian Docker 安装
第三步,将本地创建的flask项目上传到linux,建议先在windows环境下运行,看看跑的通不。项目创建参考:
Flask搭建登录注册项目(全网最详细教程)
我是在linux下新建了一个flask01的文件夹,再把我在windows的项目内容复制过去。项目内容有:
关于Dockerfile文件,内容如下:
FROM python:3.9.2
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
COPY . .
CMD ["gunicorn", "app:app", "-c", "./gunicorn.conf.py"]
解读下Dockerfile:
FROM python:3.9.2
①第一行的版本号,是linux下python的版本号,可以通过linux命令python – version查询获取。如果找不到,那么要先安装python包,安装教程自行查找。我查到我安装的版本号是3.9.2
CMD ["gunicorn", "app:app", "-c", "./gunicorn.conf.py"]
②最后一行的第一个app,是你项目的启动文件名,因为我的启动文件是app.py,所以这里就是app,如果你是其他名字,如start.py,那么这里就应该是”start:app”。第二个app表示创建的flask对象。
gunicorn.conf.py的内容如下。注意,这里我把端口设置为80
workers = 5
worker_class = "gevent"
bind = "0.0.0.0:80"
requirements.txt的内容如下。这个文件的意思就是你这个项目要导入的包。最开始照搬其他博主的,忘记根据自己的项目情况来,没有导入项目需要的pymysql,导致报错了。
gunicorn
gevent
flask
pymysql
我们要保证项目跑起来,要在linux下安装flask、gunicorn 、geven。安装又依靠pip,所以要先安装pip(linux安装pip的方式自行百度),再安装对应的包,我的系统安装的是pip3,所以命令如下:
pip3 install flask
pip3 install gunicorn
pip3 install gevent
3个包安装下来,gevent这个包会报错。可以参考这个教程修正:
pip install gevent 安装失败的解决办法
第四步,在linux运行下我们的启动文件,因为我安装的是python3,命令如下:
python3 app.py
第五步,通过gunicorn启动flask服务,输入命令:
gunicorn app:app -c gunicorn.conf.py
终端出现这个界面,一般就是运行成功了,可以在linux的浏览器输入这个地址看看效果
第六步,创建镜像
docker build -t 'zhuzhu' .
zhuzhu是镜像名,注意后面有个空格和.
验证下是否创建成功,用以下命令查看镜像:
docker images
第七步,启动容器运行docker镜像(80是前面gunicorn.conf.py设置的端口号)
docker run -d -p 3000:80 zhuzhu
第八步,推送到镜像仓库,如harbor
第九步,部署到服务器,如Rancher
另外,附上docker常用的命令
列出所有的容器,可查询到容器id
docker ps -a
停止运行中的容器
docker stop CONTAINER ID
删除容器
docker rm container_id
删除镜像
docker rmi image_id
Original: https://blog.csdn.net/lala_yanzi/article/details/123840622
Author: 林家小猪
Title: Linux环境使用Docker手工部署Flask项目
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/748080/
转载文章受原作者版权保护。转载请注明原作者出处!