构建期间共享卷?

时间:2018-02-05 23:31:31

标签: docker docker-compose docker-volume

我有一个像这样的docker-compose环境设置:

甲骨文 文件系统 应用 ... 等...

文件系统容器从我们的repo下载最新代码并公开其卷以供其他容器装载。除了需要使用代码执行构建的容器无法访问它之外,这很有效,因为在容器运行之前不会挂载卷。

我想避免签出/下载代码,因为代码库现在超过3 gig ...因此试图做一些更加狡猾的事情。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

正如您所提到的,当容器启动时使用卷时,Docker卷无法正常工作。

针对您的情况的最佳解决方案是使用Docker multistage Builds。这里的想法是拥有一个具有代码库的图像,其他图像可以直接从该图像访问该代码。

你基本上有一个图像,负责提取代码:

FROM alpine/git
RUN git clone ...

然后,您可以单独构建此图像,也可以将其作为撰写文件中的第一个图像。

其他图像可以使用此图像:

FROM code-image as code

COPY --from=code /git/<code-repository> /code

这将使代码可用于所有图像,并且只能从远程仓库中拉出一次。