我有几个容器,每个容器都有自己的Dockerfile。每次我使用docker-compose build
构建时,每个容器都会运行自己的需求;来自requirements.txt文件(RUN pip install -r requirements.txt)
,或直接来自Dockerfile (RUN pip install Django, celery, ...)
。许多要求在一些容器中很常见(几乎所有容器)。
它工作正常,但构建时间存在问题。从头开始构建每个容器需要将近45分钟。 (比如我删除了所有图像和容器后)
有没有办法在所有容器的公共目录中安装所有需求,这样每次新容器构建时我们都不会安装常用需求?
我正在使用的Docker-compose是版本2.
答案 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镜像完全可以重复使用!