Docker将安装需求组合成一个共享目录

我有几个容器,每个容器都有自己的Dockerfile。 每次我在build造时,使用docker-compose build ,每个容器都运行自己的需求; 可以从requirements.txt文件(RUN pip install -r requirements.txt)或者直接从Dockerfile (RUN pip install Django, celery, ...) 。 许多要求在一些容器(几乎全部)中是常见的。

它工作正常,但是build立时间有问题。 从头开始构build每个容器需要将近45分钟的时间。 (让我说删除所有的图像和容器后)

有没有办法将所有的需求安装在所有容器的公共目录中,这样每次build立一个新的容器时我们都不需要安装通用的需求?

我使用的Docker-compose是版本2。

你可以定义你自己的基础图像。 比方说,你所有的容器都需要django和boto,你可以创build你自己的Dockerfile:

 FROM python:3 RUN pip install django boto # more docker commands 

然后,您可以将这个图像构build为arrt_dtu/envbase并将其发布到某处(dockerhub,您公司的内部docker环境)。 现在你可以使用这个创build专门的图像:

 FROM arrt_dtu/envbase RUN pip install ... 

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