在dockerfile

时间:2017-04-29 09:23:47

标签: python-3.x docker pip docker-compose dockerfile

我正在尝试为我的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模块并使用缓存版本。

1 个答案:

答案 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 . .