Docker在共享目录中编写安装要求

时间:2017-02-03 13:34:13

标签: django docker docker-compose dockerfile

我有几个容器,每个容器都有自己的Dockerfile。每次我使用docker-compose build构建时,每个容器都会运行自己的需求;来自requirements.txt文件(RUN pip install -r requirements.txt),或直接来自Dockerfile (RUN pip install Django, celery, ...)。许多要求在一些容器中很常见(几乎所有容器)。

它工作正常,但构建时间存在问题。从头开始构建每个容器需要将近45分钟。 (比如我删除了所有图像和容器后)

有没有办法在所有容器的公共目录中安装所有需求,这样每次新容器构建时我们都不会安装常用需求?

我正在使用的Docker-compose是版本2.

1 个答案:

答案 0 :(得分:1)

您可以定义自己的基本图像。假设您的所有容器都需要django和boto,例如,您可以创建自己的Dockerfile:

FROM python:3

RUN pip install django boto

# more docker commands

然后,您可以将此图像构建为arrt_dtu/envbase并将其发布到某个位置(dockerhub,您公司的内部docker环境)。现在,您可以使用以下方法创建专业图像:

FROM arrt_dtu/envbase

RUN pip install ...

这与我们对ruby图像的原理完全相同,例如。 ruby使用的是linux。如果你想要一个rails图像,你也可以使用ruby图像。 Docker镜像完全可以重复使用!