专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Docker在手,天下我有,Win10下Docker部署Gu

  书接上回,之前一篇:Win10环境下使用Flask配合Celery异步推送实时定时消息(Socket。io)2020年最新攻略,阐述了如何使用Celery异步推送Websocket消息,现在我们利用Docker将这个完整项目部署起来,为什么用Docker呢?原因很简单,这种容器技术可以将整个项目用单个容器装起来,仅仅只需要维护一个简单的配置文件就告诉电脑每次部署要把什么东西装进容器,甚至把这个过程自动化,部署流程就会变得简单、方便。
  简单理解就是Docker的镜像就类似《精灵宝可梦》中小智手里的精灵球,我们的项目就类似那些宠物小精灵,当我们开发完毕就可以利用DockerFile对项目进行打包制作成镜像(小精灵被吸入精灵球),部署时就可以理解为小精灵被释放出来进行战斗(通过打包好的镜像运行容器),而Docker的仓库则提高了镜像的便捷性,可以让我们随时随地只要联网就可以使用自己的镜像(相当于小智不用随身携带精灵球,而是通过网络随时下载需要的精灵球)。
  同时Docker其强大的跨平台特性,可以让我们在任何系统下部署项目,包括经常令人诟病的Windows,值得一提的是本次在Win10下部署项目的流程同样适用于Centos、Macos、Ubuntu等系统,其兼容性可见一斑。
  关于Win10如何折腾和配置Docker,请参照这篇文章:win10系统下把玩折腾DockerToolBox以及更换国内镜像源(各种神坑)
  首先简单看一下项目结构:
  manage。py是项目的入口文件,这里我们利用Sockert。io让Flask支持WebsocketfromflaskimportFlaskfromflasksqlalchemyimportSQLAlchemyimportpymysqlfromflaskimportrequest,jsonifyfromflaskcorsimportCORSfromflasksocketioimportSocketIO,send,emit,joinroom,leaveroomimporturllib。parseimportuserviewfromceleryimportCeleryfromdatetimeimporttimedeltapymysql。installasMySQLdb()appFlask(name)app。config〔SQLALCHEMYDATABASEURI〕mysql:root:rootlocalhost:3306mdapp。config〔SQLALCHEMYCOMMITONTEARDOWN〕Trueapp。config〔SQLALCHEMYTRACKMODIFICATIONS〕Trueapp。config〔BROKERURL〕redis:localhost:6379app。config〔CELERYRESULTBACKEND〕redis:localhost:6379app。config〔CELERYACCEPTCONTENT〕〔json,pickle〕app。config〔REDISURL〕redis:localhost:6379app。config〔JSONASASCII〕FalseCORS(app,corsallowedorigins)app。registerblueprint(userview。user)dbSQLAlchemy(app)socketioSocketIO(app,corsallowedorigins,asyncmodethreading,messagequeueapp。config〔CELERYRESULTBACKEND〕)celeryCelery(app。name)celery。conf。update(app。config)celery。conf。CELERYBEATSCHEDULE{test:{task:getcron,schedule:timedelta(seconds10)}}celery。task(namegetcron)defgetcron():getsendback。delay()celery。task()defgetsendback():socketio。emit(sendback,message,broadcastTrue)app。route(task)defstartbackgroundtask():getsendback。delay()return开始app。route(,methods〔GET,POST,PUT,DELETE〕)defhelloworld():resdb。session。execute(insertintouser(username)values(123))resdb。session。execute(selectid,usernamefromuser)。fetchall()datarequest。args。get(id)datarequest。form。get(id)print(data)print(res)returnHelloFlaskreturnjsonify({result:〔dict(row)forrowinres〕})returnjsonify({message:你好,Docker})socketio。on(join)defonjoin(data):usernameuser1roomroom1joinroom(room)send(usernamehasenteredtheroom。,roomroom)socketio。on(message)defhandlemessage(message):messageurllib。parse。unquote(message)print(message)send(message,broadcastTrue)socketio。on(connect,namespacechat)deftestconnect():emit(myresponse,{data:Connected})socketio。on(disconnect,namespacechat)deftestdisconnect():print(Clientdisconnected)app。route(sendback,methods〔GET〕)defsendback():socketio。emit(sendback,message)returnokifnamemain:socketio。run(app,debugTrue,host0。0。0。0,port5000)
  接下来使用Gunicorngevent来运行Flask项目,Gunicorn服务器作为wsgiapp的容器,能够与各种Web框架兼容(flask,django等),得益于gevent等技术,使用Gunicorn能够在基本不改变wsgiapp代码的前提下,大幅度提高wsgiapp的性能。那到底怎么提升性能?说简单点,Gunicorn默认的网络模型是select,当我们把worker替换成gevent后,则改为epoll监听模型,关于select、poll、epoll请参照这篇文章:关于Tornado:真实的异步和虚假的异步,这里不再赘述。
  安装相应的库pipinstallgunicorngeventuser
  编辑项目目录下的gunicorn。conf。pyworkers3进程数workerclassgevent异步模式bind0。0。0。0:5000
  由于Gunicorn并不支持Windows环境,所以只需要写好配置,不需要运行。
  编辑项目目录下的requirements。txt文件,这里面都是我们项目所依赖的库flask1。0。2flaskcorsflasksocketioflasksqlalchemypymysqlcelerygunicorngeventredis3。3。11
  随后在项目目录下创建一个Dockerfile文件,这个文件可以理解为打包镜像的脚本,你需要这个镜像做什么,就把任务写到脚本中,Docker通过执行这个脚本来打包镜像FROMpython:3。6WORKDIRProjectmyflaskCOPYrequirements。txt。RUNpipinstallrrequirements。txtihttps:pypi。tuna。tsinghua。edu。cnsimpleCOPY。。ENVLANGC。UTF8CMD〔gunicorn,manage:app,c,。gunicorn。conf。py〕
  可以看到,我们项目的镜像首先基于python3。6这个基础镜像,然后声明项目目录在Projectmyflask中,拷贝依赖表,之后安装相应的依赖,这里在安装过程中我们指定了国内的源用来提高打包速度,最后利用gunicorn运行项目,值得一提的是,ENVLANGC。UTF8是为了声明Docker内部环境中的编码,防止中文乱码问题。
  最后我们就可以愉快的打包整个项目了,在项目根目录下执行dockerbuildtmyflask。
  此时看到Docker通过读取Dockerfile文件来下载所需的基础镜像和依赖库,这里一定要指定Docker的下载源,否则速度会非常缓慢,打包好的镜像文件大概有1g左右。
  下载结束之后,可以看到myflask这个镜像已经静静躺在镜像库中了,运行dockerimages
  命令来查看
  然后我们就可以利用这个镜像来通过容器跑Flask项目了,运行命令dockerrunitrmp5000:5000myflask
  这里的命令是通过端口映射把docker内部的端口5000映射到宿主机的5000端口上,后面的参数是镜像名称。我们看到,在Win10下,已经不可思议的通过Gunicorn把Flask跑起来了,这在之前没有Docker技术之前是不可想象的。
  通过网址访问一下,这里注意一点,就是Windows系统下,访问Docker容器需要通过分配的ip来访问,而不是我们常用的localhost。
  完全没有任何问题。
  结语:到这里我们的DockerFlaskGunicorn就部署完毕了,将这个镜像上传Dockerhub仓库,在任何时间、任何地点、任何系统上,只要连着网、只要我们想,就都可以在短短1分钟之内部署好我们的项目,这就是Docker技术对开发人员最好的馈赠。最后奉上项目地址:https:gitee。comQiHanXiBeimyflask

上市以来最惨淡成绩!华远地产去年亏损超35亿,排名跌至130位本文来源时代财经作者刘新歌房地产市场下行让房企前几年入手的项目承压不小,反映到财务表现上,即是数额不小的计提减值以及由此造成的亏损。1月30日下午,华远地产发布2022年年度业绩预各省春节旅游成绩单出炉了,谁是最大赢家?这个春节,旅游市场迎来了一次报复性消费,全国国内旅游出游人次高达3。08亿人次,恢复至2019年同期的88。6,久违的人潮重现全国各地景区,截至1月29日,全国已经有21个省市公布Ning掌控节奏,UP力克AL收获首胜,前IG冠军辅助说出目标又至深夜时分,LPL春季赛在1月31日的对局迎来终章,小学弟Scout率LNG迎战RNG之前,LPL老牌战队WEUP先后带走胜利,有国产中单Shanks接管团战,WE连下两城横扫T彝山寻根头条创作挑战赛在遥远荒凉的彝家山寨火把节燃亮之际,我含泪呐喊着吉狄马加的诗句世界,请听我回答我是彝人!从一朵高原浮雕上走来的情愫,总是多愁善感。多愁善感,并不是这山与山骚动万年的声李一消一缕乡愁恨青丝一缕乡愁恨青丝文李一消(原创首发)一缕月光万千愁片片思念入海流一片梅花,繁星点点春风正在织补伤口一壶老酒,点燃心头历历往事总是不堪回首一条静谧的小河就把童年越拉越瘦几句乡音,几番问喝白酒,为什么有人只喝矿泉水却不喝茶水,行家这才是内行人昨天,酒友群有位酒友说了这么一件事,自己的一位朋友喝酒时特别另类,别人在饮酒的空隙都喝茶,而他却只喝矿泉水。而对此,群里有行家表示,这可不是什么另类,有这种习惯的人往往对喝酒都有一把孩子馋哭的10道菜,十分钟上桌,荤素搭配,好吃放不下筷豆瓣青椒炒肉食材青椒肉片适量调和油葱花,姜丝料酒,酱油盐做法1青椒洗净,掰成块备用2锅内做油,油热后放入葱花姜丝爆香3放肉片煸炒片刻后,下入掰好的青椒翻炒4加入料酒,酱油,盐等调料好吃卫生又省钱!山姆好物推荐14款好久不分享美食了!!!双十一我没买护肤品买了一堆吃的!今天来盘点山姆会员店里那些健康好吃保质期又不是很长,吃起来放心又开心的好物,分为三部分来推荐,那些大家都已经知道的很火的小吃,崆峒雪霁,仙山琼瑶绝景上天梯依崆峒山势而建,似通往苍穹之路,望不到尽头的山径石阶以陡峭著称。雪霁,蹑蹬天梯而上,崆峒问道寻幽访古。登顶崆峒主峰马鬃山,见山中道观之首皇城,堂皇傲立马鬃之巅。雪后皇城,琼楼广言以消费开门红力拼全年红多个部门与支付平台日前发布的数据显示,在刚刚过去的春节假期里,我国出行旅游火爆,城市商圈客流量增多,春节档掀起观影热潮春节消费的表现为市场复苏开了个好头。与此同时,中央和地方纷纷展广西一饭店宰客4个菜1573元,缺斤少两吃不饱,结局很舒适社会在发展,时代在进步,生活质量越来越高,外出旅游散心,已成多数人的共识。只是出门在外,人生地不熟的,难免会吃亏入坑,很多饭店和酒店,都会在旺季宰客。对本地人正常价格,甚至会有优惠
生门精神分裂孕妈妈我们可能不会记得自己是如何出生的,带着一股倔强和希望地破土而出,是生的伟大,是爱的延续。中南医院八楼妇产科挤满了人。住院医师丹丹一脸幸福的笑容,孩子马上就要出生了,她想无论如何要自39岁男子坚持每天吃枸杞降血糖养肾,后来身体怎么样了?现如今,人们的生活条件变好,大家对于身体健康的重视程度增高,不少人的心中都有自认为很健康的养生食材,其中就包括枸杞。有些人平时会用枸杞泡水喝,而有的人甚至直接吃枸杞,有一位39岁的我与黄山日报征文朱国平我的精神家园编者按岁月不居,时节如流。伴随着新时代中国特色社会主义的历史车轮滚滚向前,今年5月,由改革开放总设计师邓小平同志亲笔题写报名的黄山日报将迎来创刊70周年。这一刻,我们感慨万千,既有2023年第一次旅行(二)国家博物馆2017年的夏季,我曾经来过北京,那次时间紧只去了天安门和故宫和颐和园,夏季的北京很热。那次非常遗憾,没有到人民大会堂,人民英雄纪念碑那边,所以第二次来到北京,我一定要把世界最大的出境团队游重启,小团深度游成新趋势钛媒体焦点图片来源视觉中国2月6日零点刚过,近50名游客从广州白云机场起飞,分别前往阿联酋迪拜和埃及开罗,进行为期6天和10天的旅行。这是时隔三年全国首个出发的出境旅游团。据文旅部和国务院此钻探核心技术不断突破助力我国超深油气开发央视网消息今天(2月10日),中国石油发布消息,我国最大超深气区塔里木油田博孜大北克深气区累计生产天然气突破1000亿立方米,相当于去年国产气量46,标志着超深层天然气开发成为我国。寒从脚下起,脚凉是大病!3个动作助你快速暖脚,养肾气!有些人一到冬天就手脚冰凉,不管身上穿得多严实,脚还是暖不起来。特别是晚上睡觉时,脚底蔓延上来的冷意让人怎么都睡不好,需要泡脚穿好袜子保暖才能入眠。其实,脚凉与健康关系密切。如果天冷巧克力扁桃仁酱蛋糕详细配方及操作步骤粗颗粒扁桃仁饼底配方蛋白400克砂糖300克糖粉300克扁桃仁粉275克面粉115克制作过程1打蛋桶中倒入蛋白和12量的砂糖,打至湿性发泡之后加入剩余的糖,打至中性发泡。用6寸的圆240Hz到60Hz!KVM如何征服电竞直播的高帧率慢动作KVM扩展器结合同步顺序帧速率转换(SSFRC),实现了世界上第一个超级电竞游戏慢动作回放,今天的视频就带你了解,从240Hz到60Hz的转换是如何通过KVM实现的视频加载中说到体银川海关推广跨境电商商品条码应用帮消费者省心卖放心买海关工作人员对跨境电商商品开展监管。银川海关供图中新网银川2月10日电(记者李佩珊)记者10日从银川海关获悉,自当日起,银川海关将推广跨境电商零售进口商品条码应用。商品条码又称GT丁维迪首战比肩欧文,特雷杨3612,小火车3球20分,篮网争冠有戏20222023赛季NBA常规赛正在如火如荼的进行中,2月10日比赛结束后,来看下今日赛况以及各队球员数据之最掘金104115不敌魔术掘金队戈登砍下全队最高的37分,约基奇送出全队
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网