我在考虑使用Docker来运行Django。
由于这个Docker镜像将专门用于特定的Django项目。那么,是否可以只在Docker中使用pip安装所有必需的Django和相关软件包,而不是创建一个虚拟环境并使用pip安装所有所需的软件包?
那么,如果有人想坚持使用Docker来管理Django项目,什么是最好的方法,也是最安全的方法呢?
我在考虑使用Docker来运行Django。
由于这个Docker镜像将专门用于特定的Django项目。那么,是否可以只在Docker中使用pip安装所有必需的Django和相关软件包,而不是创建一个虚拟环境并使用pip安装所有所需的软件包?
那么,如果有人想坚持使用Docker来管理Django项目,什么是最好的方法,也是最安全的方法呢?
您是正确的,您不需要在django容器内使用虚拟环境。
如果您始终使用pip并将要求存储在requirements.txt中,则可以使用此文件来初始化开发的虚拟环境,而无需使用docker,并为设置docker容器做准备:
为了减小容器的大小,请在安装后删除pip缓存:
"最初的回答"
如果您总是使用 pip 并将要求存储在 requirements.txt 中,那么您可以使用它来初始化开发所需的虚拟环境,而无需使用 docker,也可以用于设置 docker 容器。不需要在 django 容器内使用虚拟环境。
为了减小容器的大小,在安装后删除 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 run pip freeze > requirements.txt
来生成一个需求文件。 - Evan OttingerDocker容器提供了已经隔离的环境,这与virtualenv的目标相似。因此,如果只有一个应用程序在Docker容器中运行,则可以直接使用它,而不需要virtualenv带来的另一层。个人而言,在容器中没有看到过使用virtualenv的Django应用程序。