Linux环境使用Docker手工部署Flask项目

网上大部分关于Docker部署Flask项目的教程,都没告知需要在Linux环境下部署,所以会导致整个教程看下来,在windows系统实操,都是失败的。
第一步,在自己的windows系统安装个linux虚拟机。(具体教程自行网上搜索)
第二步,在linux系统安装docker
Centos安装docker的教程:Linux CentOS安装docker
Debian安装docker的教程:Debian Docker 安装
第三步,将本地创建的flask项目上传到linux,建议先在windows环境下运行,看看跑的通不。项目创建参考:
Flask搭建登录注册项目(全网最详细教程)

我是在linux下新建了一个flask01的文件夹,再把我在windows的项目内容复制过去。项目内容有:
Linux环境使用Docker手工部署Flask项目_第1张图片
关于Dockerfile文件,内容如下:

# 基于的基础镜像,这里使用python,开发版本是 3.9.2 ,基础镜像也写3.9.2
FROM python:3.9.2
# /app 是要部署到服务器上的路径
WORKDIR /app
# Docker 避免每次更新代码后都重新安装依赖,先将依赖文件拷贝到项目中
COPY requirements.txt requirements.txt
# 执行指令,安装依赖
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# COPY指令和ADD指令功能和使用方式类似。只是COPY指令不会做自动解压工作。
# 拷贝项目文件和代码
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"   # 采用gevent库,支持异步处理请求,提高吞吐量
bind = "0.0.0.0:80" #设置端口80,这里注意要设置成0.0.0.0,如果设置为127.0.0.1的话就只能本地访问服务了

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

终端出现这个界面,一般就是运行成功了,可以在linux的浏览器输入这个地址看看效果Linux环境使用Docker手工部署Flask项目_第2张图片
第五步,通过gunicorn启动flask服务,输入命令:

gunicorn app:app -c gunicorn.conf.py

终端出现这个界面,一般就是运行成功了,可以在linux的浏览器输入这个地址看看效果
Linux环境使用Docker手工部署Flask项目_第3张图片

第六步,创建镜像

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

你可能感兴趣的:(Docker,flask,flask,linux,docker,1024程序员节)