Docker 项目快速部署Flask项目

Docker 之 Python Flask 服务的构建运行 前言 使用Docker容器的形式运行一个简单的Flask项目 步骤 一.编写py代码 1.用python编写一个简单的Flask项目,这里我使用的是PyChram进行项目的编写 创建一个名叫app.py的文件如下:(值得注意的是:Flask 需要一波倒包,鼠标移动到Flask 按 Alt + Enter 完成倒包) #!/user/bin/env python3 # -*- coding: utf-8 -*- # @Email : 3431463@qq.com from flask i 阅读详情

前言

打造 flask + gunicron + nginx + Mysql 环境
nginx + Mysql 使用docker 快速部署
使用 supervisor 对 gunicron 做监控
环境:centos7 ,python3.7

flask 篇

flask 项目就不多赘述了。这里贴一下项目的目录,便于解释下面的命令参数。
flask
运行python app.py脚本,即可 web 访问,但无法并发访问,如果需要多线程开启 web 服务,实现并发访问,则需要额外一个工具进行封装,如gunicorn

这里安装 gunicron
gunicron 是用来 解析HTTP请求的网关服务
安装命令

pip install gunicron
# start gunicorn server  命令: 
# gunicorn  命令要在 flask 项目所在的文件夹下运行
gunicorn  app:app -c gunicorn.py
# gunicorn.py 内容
# 并行进程数量
workers = 3
# 每个进程的线程数
thread = 5
# #gunicorn监控的接口
bind = '0.0.0.0:5000'
# 进程pid文件
pidfile = 'gunicorn.pid' #gunicorn进程id,kill掉该文件的id,gunicorn就停止

logfile = './debug.log' #debug日志
errorlog = './error.log' #错误信息日志

loglevel = 'debug'
logfile = './debug.log' #debug日志
errorlog = './error.log' #错误信息日志
timeout = 90

#https://github.com/benoitc/gunicorn/issues/1194
keepalive = 75 # needs to be longer than the ELB idle timeout
worker_class = 'gevent'

docker 篇

docker 安装 mysql

docker pull mysql
docker run -p 3306:3306 --name test-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

进入mysql容器

docker exec -it test-mysql /bin/bash
# 进入mysql容器
docker exec -it test-mysql /bin/bash

# 查看mysql配置文件
cat /etc/mysql/my.cnf
# 进入mysql命令行
mysql -u root -p123456
# 修改数据库的权限 
grant all on *.* to 'root'@'%';
# 刷新权限
flush privileges

docker 安装 nginx

nginx是一个功能强大的反向代理服务器, 使用nginx来转发gunicorn服务。
为什么要在gunicorn之上再加层nginx呢?一方面nginx可以补充gunicorn在某些方面的不足,如SSL支持、高并发处理、负载均衡处理等

编辑配置文件/etc/nginx/sites-available/default,修改location /如下

#拉取最新的nginx 镜像
docker pull nginx
sudo mkdir /opt/nginx
# 启动nginx容器
docker run -d -p 80:80 -p 443:443 --name nginx01  -v /opt/nginx:/etc/nginx  nginx 

-p 80:80 -p 443:443 暴露80 , 443 端口
-v /opt/nginx:/etc/nginx nginx 挂载目录

进入容器

docker exec -it nginx01 /bin/bash

编辑配置文件/etc/nginx/conf.d/default.conf 修改location /如下

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
    proxy_pass http://localhost:5000/;
    proxy_redirect off;

    proxy_set_header Host $http_post;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

重启nginx服务

docker restart nginx01

此时flask已经可以并发访问了,但存在一个问题,就是gunicron不支持重启,如果脚本需更新、服务异常关闭等,如何自动启动?
这里就要用到supervisor。
supervisor是一个用python语言编写的进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。当一个进程意外被杀死,supervisor监听到进程死后,可以很方便的让进程自动恢复,不再需要程序员或系统管理员自己编写代码来控制.

Supervisor 安装配置

1、安装

方法一 (yum安装)

yum install epel-release
yum install supervisor

方法二 (推荐第二种: 本人环境python 3.7)

pip install supervisor

生成配置文件

sudo root
mkdir -p /etc/supervisor/conf.d # 这个目录是配置文件所存放的目录
echo_supervisord_conf > /etc/supervisord.conf

需要注意的地方

supervisor安装后/etc下有时默认没有配置文件,运行echo_supervisord_conf程序生成supervisor的初始化配置文件

-bash: /etc/supervisord.conf: Permission denied
sudo chmod -R 777 /etc
sudo  echo_supervisord_conf > /etc/supervisord.conf

创建 gunicorn服务的配置文件

创建/etc/supervisor/conf.d/gunicorn.conf文件
gunicorn服务的配置文件:

[program:gunicorn]
command=/home/cloud/anaconda3/bin/gunicorn -b 0.0.0.0:5000 app:app -c gunicorn.py
directory=/home/cloud/git/Data_Lineage/Data_Lineage_backend
autostart=true
autorestart=true
user=cloud
redirect_stderr=true
stdout_logfile=/home/cloud/superErr.log

program: 为你的进程取个别名
command:执行进程的命令
dirrectory:你的文件所在地址
redirect_stderr:将错误输出到日志
stdout_logfile:设置日志文件所在
path autostart=true supervisord守护程序启动时自动启动tornado
autorestart=true ;supervisord守护程序重启时自动重启tornado
redirect_stderr=true ;将stderr重定向到stdout

修改配置文件 /etc/supervisord.conf添加:

[include]
;files = relative/directory/*.ini
files = /etc/supervisor/conf.d/*.conf

特别注意:
初始化的 /etc/supervisord.conf 文件中

;[include]
;files = relative/directory/*.ini

记得要将前面的;去掉,否则不生效

Error 内容

supervisord -c /etc/supervisord.conf 运行失败


[cloud@web conf.d]$ supervisord -c /etc/supervisord.conf
[cloud@web conf.d]$ supervisorctl status
gunicorn                         FATAL     Exited too quickly (process log may have details)

查看错误日志
22
查看端口被占用情况
netstat -tunpl |grep 5000
lsof -i:5000
kill -9 pid

在这里插入图片描述

[2022-12-14 16:19:57 +0000] [14203] [INFO] Starting gunicorn 20.1.0

Error: Already running on PID 14202 (or pid file 'gunicorn.pid' is stale)

[cloud@web Data_Lineage_backend]$ cat gunicorn.pid
14202
[cloud@web Data_Lineage_backend]$ rm gunicorn.pid
[cloud@web Data_Lineage_backend]$ kill -9 14202
[cloud@web Data_Lineage_backend]$ gunicorn  app:app -c gunicorn.py
[2022-12-14 16:20:55 +0000] [14562] [INFO] Starting gunicorn 20.1.0

Error: Already running on PID 14536 (or pid file 'gunicorn.pid' is stale)



在这里插入图片描述

Docker:部署Flask api 服务 步入正题之前,依旧贴出经常使用的docker命令。 阅读详情

相关推荐

一文详解gunicorn的功能及使用方法

一、gunicorn的简介 Gunicorn是基于unix系统,被广泛应用的高性能的Python WSGI HTTP Server。用来解析HTTP请求的网关服务。 它通常是在进行反向代理(如nginx),或者进行负载均衡(如 AWS ELB)和一个web 应用(比如 Django 或者 Flask)之间。 它的运行模型基于pre-fork worker 模型,即就是支持eventlet,也支持greenlet。 二、gunicorn特点 其特点:1、能和大多数的Python Web框架兼容; 2、简单易上

小橙子的笔记屋 5万+

在docker中部署简单的flask项目

使用pycharm,在docker中部署简单的flask项目,并且运行调试

qq_38122800的博客 3953

医学影像处理实战:用SimpleITK将CT数据重采样到统一尺寸(附完整代码)

本文针对医学影像分析中多源CT数据尺寸不一致导致深度学习模型训练失败的问题,提供了基于SimpleITK的实战解决方案。通过深入解析图像尺寸与间距的关系,详细阐述了如何通过调整体素间距进行重采样,而非简单补零,从而在保持图像物理尺寸不变的前提下,将数据统一到固定尺寸,确保输入网络的3D数据空间对齐且解剖信息准确。

weixin_29062671的博客 270

docker部署一个最简单的flask项目

docker部署一个最简单的flask项目,容器端口映射,外网访问

weixin_44867493的博客 3446

Cryptomatte For Nuke的安装

进入官网https://github.com/Psyop/Cryptomatte,下载文件代码。 将Cryptomatte/nuke里的文件内容复制粘贴到 .nuke文件夹内。 在我们复制粘贴的内容中可以看到两个文件。 同时,我们进入nuke的下载目录,打开plugins文件夹,看到和插件中一样python文件——init.py和menu.py。 我们将Cryptomatte里的init.py和menu.py里的python代码复制粘贴到Nuke/plugins下的init...

qq_41627587的博客 9062

用Python可视化硅晶体生长:3D图解<100>/<110>/<111>晶向差异

本文通过Python 3D可视化技术,详细解析了硅晶体生长中<100>、<110>、<111>三种关键晶向的差异及其在半导体工业中的应用。从密勒指数转换到原子密度计算,结合交互式3D模型展示不同晶向的原子排列特性,帮助读者深入理解晶向对芯片性能的影响。

weixin_42567752的博客 568

# 项目部署指南:Flask、Gradio与Docker实现流程

在机器学习和Web开发中,将模型或应用部署为在线服务是关键一步。容器化实现高效部署,涵盖完整流程图与代码示例。快速构建前端界面,并通过。创建Dockerfile。构建Docker镜像。

m0_72829651的博客 1721

VoIP概述

VoIP统一通信与VoIPVoIP与传统电话比较VoIP各项产品设备的类型及应用 统一通信与VoIP 统一通信指的是把计算机与传统通信技术统一成一体的新通信模式,融合计算机网络与传统通信网络在一个网络平台上,实现电话、传真、数据传输、音视频会议、呼叫中心、即时通信等众多应用服务 VoIP又称IP电话或IP网络电话,是Voice Over IP的缩写,这种技术通过对语音信号进行编码数字化,压缩处理成压缩帧,然后转换成为IP数据包在TCP/IP网络上进行传输,从而达到了在IP网络上进行语音通信目的 VoIP与传

kaminao的博客 4359

2025 最新Docker部署flask项目

接下来,为您的Flask应用创建一个Dockerfile。Dockerfile是一个包含构建Docker镜像所需指令的文本文件。首先,确保您已经有一个可以正常运行的Flask应用。如果您的Flask应用有外部依赖项(如Flask本身、数据库连接器等),请确保在。8.我是初学者,下次学习部署yolo模型,有疑问或需要源码可以留言。表示将容器的5000端口映射到主机的4000端口上,安装简单,环境配置复杂,这一步是成功的关键。)都在与Dockerfile相同的目录中。是镜像的名称,您可以根据需要更改它。

2401_84769586的博客 763

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

计算机组成原理(第三版)唐朔飞-第三章系统总线-课后习题

计算机组成原理(第三版)唐朔飞-第三章系统总线-课后习题

weixin_45735391的博客 6万+

Ubuntu上使用docker部署flask项目记录

上课的时候老是让我们写了个词频统计网站,我用flask做后台,写完后发现不会部署,直接在服务器段搭建apache2和nginx都没成功,最后采用了docker的方式进行操作。 以下记录当时的操作。 首先用Xftp将文件上传到服务器端,然后将项目文件放到某一个文件夹(我放在了/home/app下) 文件目录如下: 注意,app所在的文件命名为main.py,不然用不了(我整了半天才发现不是main不能用) 然后下载所需要的环境。 这里我们需要python3.6以上环境(一般linux系统默认带pyt

satasun的博客 748

uboot引导vxworks6.9(T4240) 启动

vxworks内核配置下搜索RAM_LOW_ADRS, 值为0x01000000, 是vxworks下载启动的地址,uboot启动时会用到。vxworks6.9 t4240用的是32地址空间,uboot下用的是64位地址空间,去uboot下修改law物理地址空间为32位。vxworks下flash基地址为 0xff000000, 将vx下的地址修改为0xe0000000,和uboot下地址一致。uboot下flash基地址为0xe000000,vxworks内核配置为build-in 符号表。

珂珂可爱多 3236

如何在Flask项目中部署Flask-Blogging:从安装到上线的简单步骤

Flask-Blogging是一个基于Markdown的Python博客引擎,作为Flask扩展,它能轻松为你的Web应用添加专业的博客功能。本文将带你通过简单步骤完成从安装到上线的全过程,让你快速拥有一个功能完善的博客系统。 ## 准备工作:环境与依赖 在开始之前,请确保你的环境满足以下要求: - Python 3.7及以上版本 - 已安装Flask框架 - 虚拟环境(推荐使用venv或vi

gitblog_00084的博客 612

【短距离通信】【WiFi】精讲802.11n/ac/ax mpdu和ampdu最大长度

在 Wi-Fi 标准(802.11n、802.11ac 和 802.11ax)中,和是数据传输的核心概念。理解它们各自的作用以及不同标准下的最大长度限制,有助于深入了解 Wi-Fi 的性能优化机制。以下是对802.11n802.11ac和802.11ax中MPDU和A-MPDU最大长度的详细技术分析和对比。1. MPDU 和 A-MPDU 的基本概念MPDU 是经过 MAC 层处理后的数据单元,主要由MAC层数据帧和物理层的传输头部(PHY headers)组成。

风云说通信 1108

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Flask Boilerplate 项目教程

Flask Boilerplate 项目教程 1、项目介绍 Flask Boilerplate 是一个简单的 Flask 项目模板,集成了 Postgres 数据库、Docker 容器化部署以及 Heroku/Zeit now 云服务部署。该项目旨在为开发者提供一个快速启动 Flask 应用的基础框架,包含了一些常用的配置和工具,如 SQLAlchemy 数据库 ORM、Docker 容器化等。 ...

gitblog_00922的博客 712

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

一键部署:Docker + Nginx + Gunicorn + Flask + LetsEncrypt

一键部署:Docker + Nginx + Gunicorn + Flask + LetsEncrypt 项目介绍 docker-nginx-gunicorn-flask-letsencrypt 是一个开源项目,旨在为开发者提供一个快速搭建基于 Docker 的 Web 应用环境的模板。通过使用 Docker 和 docker-compose,该项目集成了 Nginx、Gunicorn、Flask...

gitblog_00919的博客 691

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像

简单理解就是Docker的镜像就类似《精灵宝可梦》中小智手里的精灵球,我们的项目就类似那些宠物小精灵,当我们开发完毕就可以利用DockerFile对项目进行打包制作成镜像(小精灵被吸入精灵球),部署时就可以理解为小精灵被释放出来进行战斗(通过打包好的镜像运行容器),而Docker的仓库则提高了镜像的便捷性,可以让我们随时随地只要联网就可以使用自己的镜像(相当于小智不用随身携带精灵球,而是通过网络随时下载需要的精灵球)。编辑项目目录下的requirements.txt文件,这里面都是我们项目所依赖的库。

刘悦的技术博客 2675

5 分钟,教你用 Docker 部署一个 Python 应用

在使用传统物理机或云服务器上部署项目都会存在一些痛点比如:项目部署速度慢、资源浪费、迁移难且扩展低而使用 Docker 部署项目的优势包含:本篇文章将介绍 Docker 部署一个 Python 项目的常规流程Dockerfile 是一个放置在项目根目录下的描述文件,可以利用 Docker 命令基于该文件构建一个镜像常用的指令包含:FROM用于定义基础镜像MAINTAINER指定维护者信息,可以省略不写RUN和「 安装命令 」连接在一起,可用于安装工具依赖包ADD将宿主机的文件,并进行解压COPY和 ADD

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。 1796

Flask + Gunicorn + Nginx Docker 部署模板教程

Flask + Gunicorn + Nginx Docker 部署模板教程 项目介绍 本项目提供了一个使用 Docker 容器化部署 Flask 应用的模板,结合了 Gunicorn 作为 WSGI 服务器和 Nginx 作为反向代理。通过这个模板,用户可以快速部署和运行 Flask 应用,同时利用 Docker 的容器化优势,实现环境隔离和便捷的部署管理。 项目快速启动 克隆项目 首先,克隆项...

gitblog_00957的博客 514

【超实用】3 分钟,教你用 Docker 部署一个 Python 应用!

今天小编来为大家分享一下如何在Docker部署一个Python项目,使用Docker部署项目的优势有可以高效利用系统资源服务启动更快环境一致,迁移更加方便Flask项目这里为了演示的方便,我们就写一个简单的Flask项目,代码如下fromflaskimportFlask app=Flask(__name__) @app.route('/') defindex(): retur...

weixin_43373042的博客 6509

推荐项目:Meinheld, Gunicorn, Flask 和 Docker 整合应用

推荐项目:Meinheld, Gunicorn, Flask 和 Docker 整合应用 在Python Web开发中,我们经常需要一个高效、灵活且易于部署的框架。今天,我要介绍的项目就是一个集合了Meinheld、Gunicorn、Flask和Docker的强大组合,它提供了一种高效、便捷的方式来构建和运行Python web应用。。 项目简介 该项目是由Tiangolo创建的一个示例,它展示了...

gitblog_00071的博客 609

使用 Docker 容器化 Flask 应用:一个简单的示例

通过本文的示例,我们展示了如何使用 Docker 容器化一个简单的 Flask 应用。Docker 提供了一种简单、高效的方式来部署和运行应用程序,同时确保环境的一致性和隔离性。无论是在开发、测试还是生产环境中,Docker 都能为你的应用提供强大的支持。希望这个示例能帮助你更好地理解和使用 Docker。如果你有任何问题或建议,欢迎在评论区留言。

weixin_47831992的博客 929

基于 docker 和 Flask 的深度学习模型部署!

模型部署Author:louwillMachine Learning Lab模型部署一直是深度学习算法走向落地的重要的一环。随着深度学习落地需求越来越迫切,具备一定工程部署能力是算法工...

weixin_37737254的博客 6531

如何用uWSGI-Nginx-Flask-Docker快速部署Flask应用

uWSGI-Nginx-Flask-Docker是一个将uWSGI、Nginx和Flask整合在单个容器中的Docker镜像,能帮助开发者快速部署Python Flask Web应用。本文将为你详细介绍如何使用这个强大的工具,让你的Flask应用部署过程变得简单高效。 ## 准备工作:环境与工具安装 在开始部署之前,确保你的系统中已经安装了Docker。如果还没有安装,可以参考Docker官方

gitblog_00631的博客 409

Docker Web 框架示例项目教程

Docker Web 框架示例项目教程 1. 项目介绍 docker-web-framework-examples 是一个开源项目,旨在为开发者提供使用 Docker 与各种流行的 Web 框架结合的示例应用。该项目由 nickjj 维护,包含了多个 Web 框架的示例,如 Flask、Node/Express、Phoenix、Rails 等。每个示例都提供了详细的 README 文件,指导开发者...

gitblog_00688的博客 390
上一篇: Centos 7手动安装Docker
下一篇: 软件架构-4R架构定义
piepis
博客等级 码龄10年 104粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piepis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值