docker的pipenv --system选项。在docker中获取所有python软件包的建议方法是什么

时间:2019-03-08 14:02:21

标签: python django docker pipenv

我在pipenv应用中使用django

$ mkdir djangoapp && cd djangoapp
$ pipenv install django==2.1
$ pipenv shell
(djangoapp) $ django-admin startproject example_project .
(djangoapp) $ python manage.py runserver

现在我要转到docker环境。

据我了解,pipenv仅将软件包安装在virtualenv

您不需要在容器内创建虚拟环境,而摘要容器本身就是一个虚拟环境。

在经历了许多Dockerfile之后,我发现了--system选项要安装在系统中。

例如,我发现以下内容:

https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/

COPY ./Pipfile /usr/src/app/Pipfile
RUN pipenv install --skip-lock --system --dev

https://hub.docker.com/r/kennethreitz/pipenv/dockerfile

# -- Install dependencies:
ONBUILD RUN set -ex && pipenv install --deploy --system

https://wsvincent.com/beginners-guide-to-docker/

# Set work directory
WORKDIR /code

# Copy Pipfile
COPY Pipfile /code

# Install dependencies
RUN pip install pipenv
RUN pipenv install --system

因此,--system仅够用,或者--deploy --system是更好的方法。和--skip-lock --system --dev再次不同。

那么有人可以指导如何将环境恢复到Docker

1 个答案:

答案 0 :(得分:1)

典型的Docker部署会涉及到拥有一个requirements.txt(这是一个file where you can store your pip dependencies, including Django itself)文件,然后在您的Dockerfile中执行以下操作:

FROM python:3.7  # or whatever version you need
ADD requirements.txt /code/
WORKDIR /code
# install your Python dependencies
RUN pip install -r requirements.txt
# run Django
CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000"]

您完全不需要pipenv,因为您不再拥有所说的虚拟环境。

更好的是,您可以在docker-compose.yml文件中配置很多东西,然后使用docker-compose来运行和管理服务,而不仅仅是Django。

Docker have a very good tutorial on dockerising Django。如果不确定Dockerfile本身发生了什么,请check the manual