【问题标题】:Django and docker: Should we use python virtualenvDjango 和 docker:我们应该使用 python virtualenv
【发布时间】:2019-07-29 09:21:32
【问题描述】:

我正在考虑为 django 使用 docker。

由于此 docker 映像将专用于特定 django 项目,因此可以只在 docker 中安装所有内容,而不是创建一个 virtualenv,然后使用 pip 安装所有必需的 django 和相关包

如果想坚持使用 docker 进行 django 项目,那么什么是最好的也是安全的方法。

【问题讨论】:

  • 我认为是。我在我的应用程序中做同样的事情。

标签: django docker pip virtualenv


【解决方案1】:

你说得对,你不需要在 django 容器内有一个虚拟环境。

如果您一直使用 pip 并将需求存储在 requirements.txt 中,您可以使用它来初始化一个虚拟环境,以便在没有 docker 的情况下进行开发以及设置 docker 容器:

要减小容器的大小,请在安装后删除 pip 缓存:

FROM python:3.6.7-alpine3.8

...

RUN pip3.6 install -U pip setuptools \
    && pip3.6 install -r requirements.txt \
    && pip3.6 install gunicorn \. # or uwsgi or whatever
    && rm -rf /root/.cache

【讨论】:

  • 我还发现 pipenv 比使用 requirements.txt 有更好的依赖管理。所以不使用 virtualenv 如何使用 pipenv 以便我可以利用 pipenv
  • 当你创建 docker 容器进行部署时,依赖关系应该是清晰和固定的。您应该使用与开发期间相同的包和版本。从您的 pipenv 环境创建一个 requirements.txt,应该就是它。
【解决方案2】:

Docker 容器提供已经隔离的环境,这与 virtualenv 的目标相似。因此,如果它只有一个应用程序在 Docker 容器中运行,那么在没有 virtualenv 带来的另一层的情况下使用它是可以的。就个人而言,我不记得在容器中看到过与 virtualenv 一起使用的 Django 应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2010-12-10
    • 2017-01-16
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多