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项目
关于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

Linux环境使用Docker手工部署Flask项目
第五步,通过gunicorn启动flask服务,输入命令:
gunicorn app:app -c gunicorn.conf.py

终端出现这个界面,一般就是运行成功了,可以在linux的浏览器输入这个地址看看效果

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

第六步,创建镜像

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • scrapy批量保存mysql_Scrapy系列十:把爬取到的数据保存到mysql数据库

    本文代码基于系列八代码的基础上修改 1.安装mysqlclient 命令行执行:pip install mysqlclient 2.配置数据库连接信息 在settings.py文件…

    Python 2023年10月6日
    036
  • 【2022】Django连接SQL Server最新配置指引

    mssql-django简介 mssql-django 是django-mssql-backend的一个分支。该项目为 Django Web 框架提供了一个企业数据库连接选项,并支…

    Python 2023年8月4日
    044
  • python绘制热度图(heatmap)

    1、简单的代码 from matplotlib import pyplot as plt import seaborn as sns import numpy as np impo…

    Python 2023年8月1日
    041
  • Python爬取天气数据及可视化分析

    Original: https://www.cnblogs.com/123456feng/p/16145388.htmlAuthor: 蚂蚁ailingTitle: Python爬…

    Python 2023年5月24日
    068
  • scrapy 框架body/formdata的使用

    一、前言 你是否又遇到scrapy框架中FormRequests的参数选择? formdata还是 body? 遇到下面这样的网页,你该如何选择参数导入呢? 注意对比红色框框内的区…

    Python 2023年10月3日
    051
  • pandas 构造序列

    list_1=[[100,200],200,300]dict_1={‘x’:100,’y’:200,’z’:…

    Python 2023年8月8日
    055
  • 我的2022年-总结、感悟、碎碎念

    又到年底了,总结下2022吧,今年还是蛮多收获和感悟的,感觉越发活的通透了些,有些事情我们无法把握,有些事情我们能把握。淡然面对无法把握的,积极把握能把握的。 工作 工作上面今年除…

    Python 2023年10月12日
    033
  • 【NOWCODER】- Python:循环语句(二)

    【NOWCODER】- Python 刷题 😁作者:啊Q老师🐬人生格言:风起于青萍之末,浪成于微澜之间。📰个人主页:啊Q老师的博客📝系列专栏:【NOWCODER】- Python …

    Python 2023年8月1日
    047
  • 03-pytest的fixtrue(固件)的进一步使用

    场景一:在fixtrue中的方法里准备测试数据和前置依赖方法,在测试方法中参数化,测试方法调用数据准备和前置方法。例如:执行测试方法前,需要先登陆,并且需要登陆的参数。 impor…

    Python 2023年9月14日
    039
  • python spyder编辑代码卡顿解决方案

    为什么有了这篇呢? 前几天在快乐肝代码的时候,Spyder突然变得异常卡顿 … … Original: https://blog.51cto.com/cod…

    Python 2023年5月24日
    080
  • Python第一天

    Python 开发工具Python 的开发工具有很多,推荐比较多的有: PyCharm,PyCharm 是最好的一个(也是唯一一个)专门面向于Python的全功能集成开发环境。Su…

    Python 2023年5月24日
    069
  • 对中台的探索与思考

    前言 今天要分享的主题是: 对中台的探索与思考。 中台概念如今已经不是什么新的名词了,相信大家对中台都有所耳闻,目前各大企业已经先后开始建设自己的中台。 那中台到底是什么?为什么大…

    Python 2023年10月21日
    051
  • 【pyqt5学习】——QTextEdit控件学习:获取文本、添加文本

    目录 1、QTextEdit控件介绍 2、QTextEdit控件添加文本、添加HTML格式 3、QTextEdit控件获取文本、获取HTML格式文本 4、案例 1)完整代码 2)效…

    Python 2023年8月2日
    042
  • 经典背包系列问题

    经典背包系列问题 作者:Grey 原文地址: 博客园:经典背包系列问题 CSDN:经典背包系列问题 问题一 题目描述 在 n 个物品中挑选若干物品装入背包,最多能装多满?假设背包的…

    Python 2023年10月16日
    040
  • pycharm部署项目到服务器进行本地开发

    目录 连接服务器 填写Connection 填写Mappings 设置代码实时同步 连接远程服务器 使用Pycharm远程下载python库 运行项目 使用POSTMAN调用 连接…

    Python 2023年8月9日
    068
  • 远程连接postgresql数据库-redhat版本(发现ing)

    还是如此啊,介于网上的方法没法让我成功,所以我又来了。同样是自己发现的,因为想了想ftp的连接操作。虽然标题说是redhat版本,其他版本应该差不多吧! OK,咱开始远程定义&#8…

    Python 2023年6月9日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球