Flask 生产环境好难配置

2019-12-17 21:40:12 +08:00
 HTSdTt3WygdgQQGe

配了一天了,又是 nginx 又是 uWSGI 又是 Gunicorn,大佬可有 Docker 一键部署的环境

9214 次点击
所在节点    Flask
50 条回复
donotquestion
2019-12-18 09:32:05 +08:00
不会啊。。我都是 docker-compose 一遍过啊
ipwx
2019-12-18 09:38:02 +08:00
flask gunicorn 足以。uwsgi 既麻烦又不必要
HTSdTt3WygdgQQGe
2019-12-18 09:42:51 +08:00
@donotquestion compose 文件是否方便分享一下
tinybaby365
2019-12-18 09:43:51 +08:00
如果你用 K8S,我就建议一个 pod 多个容器。退而求其次,用 docker-compose。千万不要一个 docker 塞 nginx+gunicron,把它当成一个 VM 使用。
hmxxmh
2019-12-18 09:50:29 +08:00
@tinybaby365 哈哈,我想起我第一个 docker 镜像一个多 g。。。,把系统,依赖全放到了容器
encro
2019-12-18 10:03:44 +08:00
nginx + supervisord + uwsgi 一行命令
或者
nginx + supervisord + gunicorn 一个配置
john170502
2019-12-18 10:41:44 +08:00
golang 直接编译成二进制文件香不香?
wuwukai007
2019-12-18 11:05:39 +08:00
确实,不管用 docker 还是手动,都比较麻烦
dongyx
2019-12-18 11:35:48 +08:00
用 NGINX + Gunicorn 的,如何解决 url_for(..., external=True)返回的 URL 转换的问题?
Allianzcortex
2019-12-18 11:51:16 +08:00
@Trim21 说的是正解,因为项目很多时候会有很多依赖(e.g. redis/celery),写好 docker-compose 一次编排就够了。做法如:

command: >
gunicorn -b 0.0.0.0:5000
expose:
- "5000"

之后 Nginx 定义如下:

nginx:
image: nginx:stable-alpine(或者其他的 Linux 系统)
container_name: your_server
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
ports:
- "5000:80"
depends_on:
- your-server

亲历过所以可以肯定生产环境就是这样做的,用 AWS + rancher 配合很顺畅。
wangyzj
2019-12-18 12:15:46 +08:00
在会用 nginx 的前提下
Flask + Gunicorn 或者其他 server 搞起来就可以了
ashCloud
2019-12-18 14:13:32 +08:00
(( nginx+uwsgi+flask )+supervisor )+docker 一把梭。
弄不出来的话晚上可以格尼写个 demo
lihongjie0209
2019-12-18 14:15:52 +08:00
@john170502 #27 这个东西和二进制打包有什么关系? go 的 web 程序内嵌 web 服务器? java 也支持
楼主说的是多个组件之间配置麻烦
wangmy
2019-12-18 14:19:37 +08:00
@tinybaby365 在一个无外网环境下部署,我就是当容器用的,所有都在 docker 里面。没外网依赖太难处理了, 不知道还有啥简单的办法不
superalsrk
2019-12-18 18:20:32 +08:00
nginx+gunicorn+flask 啊~很快
superalsrk
2019-12-18 18:20:49 +08:00
不过你 qps 低的话。。直接 runserver 也行啊
loading
2019-12-18 18:26:14 +08:00
我想知道 windows 如何部署,准备写了个网盘,用 runserver,有一个下载就堵死啦
@superalsrk
Les1ie
2019-12-18 18:29:48 +08:00
https://github.com/tiangolo/uwsgi-nginx-flask-docker 我用的这个 缺点是比较耗内存 :( 能用就行的原则

bug: 还真有,偶尔发现网站莫名 500 ( 1 年两三次), 手动重启一下容器才行,确信不是我的代码 bug
Les1ie
2019-12-18 18:30:26 +08:00
我用过 runserver 并发大概为 1 吧... 极度容易挂掉,不推荐
wzwwzw
2019-12-18 18:40:51 +08:00
runserver 本身就是单线程的,要考虑 gunicorn + gevent 或者单 gunicorn 才行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/629944

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX