推荐学习书目
› 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 · Dec 14, 2016 · 4573 views
    This topic created in 3580 days ago, the information mentioned may be changed or developed.
    对 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 replies  •  2016-12-22 13:52:50 +08:00
    ryd994
        1
    ryd994  
       Dec 14, 2016 via Android
    不知道你说 pip 安装不了的是指什么?

    个人觉得 gunicorn 和 app 一个容器, Nginx 另一个或者直接放外面。毕竟 Nginx 单纯用作 load balance ,问题不大
    zzyzxd
        2
    zzyzxd  
       Dec 14, 2016
    个人觉得既然都用 Docker 了,就把所有依赖都写进 Dockerfile 如何?同时维护 Dockerfile 和 requirements.txt 好麻烦…… pip install 搞不定的就在 Dockerfile 里手动装。
    Ahri
        3
    Ahri  
       Dec 14, 2016
    不建议用 conda 做 production 。 Docker 官方有 Python 各版本的镜像。
    Kilerd
        4
    Kilerd  
       Dec 14, 2016 via iPhone
    个人习惯
    gunicorn+flask 一个容器. mongo 一个容器. nginx 装在宿主机
    hugo775128583
        5
    hugo775128583  
    OP
       Dec 14, 2016
    @ryd994 pip 的话比如 pillow 就比较难安装上, conda 就可以通过 conda install 直接安装编译过的
    ryd994
        6
    ryd994  
       Dec 14, 2016 via Android
    @hugo775128583 你是说 gcc 部分?
    我是一般 dockerfile 里写上,因为反正还有其他依赖要装
    用 pip 主要是因为 rpm 太旧
    hugo775128583
        7
    hugo775128583  
    OP
       Dec 14, 2016
    @ryd994 @Kilerd 谢谢二位的方案,我之后尝试一下。
    yanzixuan
        8
    yanzixuan  
       Dec 22, 2016
    做测试的时候现搞个 virtualenv ,然后测试完了再 pip freeze > requirements.txt
    我是从最基础的镜像开始构建的,写个 dockfile, 把 requirements.txt 放进去用 Pip 安装。
    然后放 flask 工程文件,把 gunicorn 搞定。然后 build 就差不多了
    nginx 你可以玩 docker 或者只用用宿主的.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2184 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:03 · PVG 09:03 · LAX 18:03 · JFK 21:03
    ♥ Do have faith in what you're doing.