V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
hugo775128583
V2EX  ›  Python

Docker+Miniconda+Flask 部署

  •  
  •   hugo775128583 · 2016-12-14 00:01:24 +08:00 · 3729 次点击
    这是一个创建于 2694 天前的主题,其中的信息可能已经有所发展或是发生改变。
    对 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 各自装填到不同的容器当中运行还是?
    8 条回复    2016-12-22 13:52:50 +08:00
    ryd994
        1
    ryd994  
       2016-12-14 02:43:14 +08:00 via Android
    不知道你说 pip 安装不了的是指什么?

    个人觉得 gunicorn 和 app 一个容器, Nginx 另一个或者直接放外面。毕竟 Nginx 单纯用作 load balance ,问题不大
    zzyzxd
        2
    zzyzxd  
       2016-12-14 06:13:20 +08:00
    个人觉得既然都用 Docker 了,就把所有依赖都写进 Dockerfile 如何?同时维护 Dockerfile 和 requirements.txt 好麻烦…… pip install 搞不定的就在 Dockerfile 里手动装。
    Ahri
        3
    Ahri  
       2016-12-14 08:01:51 +08:00
    不建议用 conda 做 production 。 Docker 官方有 Python 各版本的镜像。
    Kilerd
        4
    Kilerd  
       2016-12-14 08:49:33 +08:00 via iPhone
    个人习惯
    gunicorn+flask 一个容器. mongo 一个容器. nginx 装在宿主机
    hugo775128583
        5
    hugo775128583  
    OP
       2016-12-14 10:08:48 +08:00
    @ryd994 pip 的话比如 pillow 就比较难安装上, conda 就可以通过 conda install 直接安装编译过的
    ryd994
        6
    ryd994  
       2016-12-14 10:11:05 +08:00 via Android
    @hugo775128583 你是说 gcc 部分?
    我是一般 dockerfile 里写上,因为反正还有其他依赖要装
    用 pip 主要是因为 rpm 太旧
    hugo775128583
        7
    hugo775128583  
    OP
       2016-12-14 10:14:05 +08:00
    @ryd994 @Kilerd 谢谢二位的方案,我之后尝试一下。
    yanzixuan
        8
    yanzixuan  
       2016-12-22 13:52:50 +08:00
    做测试的时候现搞个 virtualenv ,然后测试完了再 pip freeze > requirements.txt
    我是从最基础的镜像开始构建的,写个 dockfile, 把 requirements.txt 放进去用 Pip 安装。
    然后放 flask 工程文件,把 gunicorn 搞定。然后 build 就差不多了
    nginx 你可以玩 docker 或者只用用宿主的.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   982 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:29 · PVG 03:29 · LAX 12:29 · JFK 15:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.