Docker+Miniconda+Flask 部署

2016-12-14 00:01:24 +08:00
 hugo775128583
对 Python Web 应用部署有一些疑惑,还请各位大神路过指点指点。

以前部署通常 nginx+gunicorn+flask 依赖用 `pip -r requirements.txt` 来安装。
后来接触了 Docker 和 Anaconda 包管理,想利用来做以后 web 项目的部署,但是不知道怎么结合最好。

1. Docker+Miniconda 是否比 Docker+pip 来的高效?
conda 的确是比 pip 好用些,能安装上不少 pip 安装不了的依赖,但是也有遇到 pip 能安装但是 conda 上找不到的情况,例如 flask_environments, flask_sqlalchemy 等一众 flask 扩展。

2. 是将 nginx 、 gunicorn 、 flask app 各自装填到不同的容器当中运行还是?
3737 次点击
所在节点    Python
8 条回复
ryd994
2016-12-14 02:43:14 +08:00
不知道你说 pip 安装不了的是指什么?

个人觉得 gunicorn 和 app 一个容器, Nginx 另一个或者直接放外面。毕竟 Nginx 单纯用作 load balance ,问题不大
zzyzxd
2016-12-14 06:13:20 +08:00
个人觉得既然都用 Docker 了,就把所有依赖都写进 Dockerfile 如何?同时维护 Dockerfile 和 requirements.txt 好麻烦…… pip install 搞不定的就在 Dockerfile 里手动装。
Ahri
2016-12-14 08:01:51 +08:00
不建议用 conda 做 production 。 Docker 官方有 Python 各版本的镜像。
Kilerd
2016-12-14 08:49:33 +08:00
个人习惯
gunicorn+flask 一个容器. mongo 一个容器. nginx 装在宿主机
hugo775128583
2016-12-14 10:08:48 +08:00
@ryd994 pip 的话比如 pillow 就比较难安装上, conda 就可以通过 conda install 直接安装编译过的
ryd994
2016-12-14 10:11:05 +08:00
@hugo775128583 你是说 gcc 部分?
我是一般 dockerfile 里写上,因为反正还有其他依赖要装
用 pip 主要是因为 rpm 太旧
hugo775128583
2016-12-14 10:14:05 +08:00
@ryd994 @Kilerd 谢谢二位的方案,我之后尝试一下。
yanzixuan
2016-12-22 13:52:50 +08:00
做测试的时候现搞个 virtualenv ,然后测试完了再 pip freeze > requirements.txt
我是从最基础的镜像开始构建的,写个 dockfile, 把 requirements.txt 放进去用 Pip 安装。
然后放 flask 工程文件,把 gunicorn 搞定。然后 build 就差不多了
nginx 你可以玩 docker 或者只用用宿主的.

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

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

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

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

© 2021 V2EX