我正在尝试为我的python项目设置docker,它使用虚拟环境并在requirements.txt
中定义了一些依赖项。
我也设置了docker-compose
,使用Dockerfile
使用命令docker-compose up --build
构建我的项目图像
我的Dockerfile:
FROM ubuntu:16.04
FROM python:3.5
MAINTAINER ****
ADD . /core-proejct
WORKDIR /core-project
RUN pip3 install virtualenv
RUN . /bin/activate
RUN pip install -r requirements.txt
因此,每当我尝试构建映像时,都会安装requirements.txt
的所有pip模块。
无论如何,我可以在构建映像时缓存pip模块并使用缓存版本。
答案 0 :(得分:2)
首先,dockerfile中的FROM ubuntu:16.04
是多余的,因为单个图像只能有一个上游。
解决问题的简单方法是在添加项目之前将pip
命令移至,以便更改项目不会使整个缓存无效。
最后,你真的不需要在容器中使用virtualenv,否则你may be doing something wrong。
例如:
FROM python:3.5
# MAINTAINER is deprecated. Use LABEL instead.
LABEL maintainer "your info here"
WORKDIR /core-project
ADD ./requirements.txt .
RUN pip install -r requirements.txt
# Add everything else now.
ADD . .