我在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
答案 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。