我有一个像这样的docker-compose环境设置:
甲骨文 文件系统 应用 ... 等...
文件系统容器从我们的repo下载最新代码并公开其卷以供其他容器装载。除了需要使用代码执行构建的容器无法访问它之外,这很有效,因为在容器运行之前不会挂载卷。
我想避免签出/下载代码,因为代码库现在超过3 gig ...因此试图做一些更加狡猾的事情。
有更好的方法吗?
答案 0 :(得分:1)
正如您所提到的,当容器启动时使用卷时,Docker卷无法正常工作。
针对您的情况的最佳解决方案是使用Docker multistage Builds。这里的想法是拥有一个具有代码库的图像,其他图像可以直接从该图像访问该代码。
你基本上有一个图像,负责提取代码:
FROM alpine/git
RUN git clone ...
然后,您可以单独构建此图像,也可以将其作为撰写文件中的第一个图像。
其他图像可以使用此图像:
FROM code-image as code
COPY --from=code /git/<code-repository> /code
这将使代码可用于所有图像,并且只能从远程仓库中拉出一次。