docker容器中的有效svn签出



我想签出一些文件(特别是测试套件http://llvm.org/svn/llvm-project/test-suite/trunk)在我的码头集装箱里。

现在我只在Dockerfile中使用RUN svn co http://llvm.org/svn/llvm-project/test-suite/trunk train.out/llvm-test-suite

它可以工作,但看起来效率不高:在每次docker撰写时,我需要等待大约5分钟,同时加载测试。有没有更好的方法可以防止Docker每次都签出这个文件?目前我看到的唯一替代方案是将文件包含到容器中。

您通常不会从Dockerfile内部运行源代码管理工具。在主机目录中检查它们(更好的是,如果您可以管理它,可以将Dockerfile直接添加到您试图构建的存储库中(,并在磁盘上直接运行docker build及其所有输入。

这有几个很好的原因:

  • Docker镜像缓存通常意味着Docker不会重复"克隆"、"签出"或"拉取"类型的操作:它知道已经完成了一次,并且已经知道它的输出,然后跳过这一步,即使有新的提交,你也没有。

  • svngit等工具添加到您只需要构建的映像中,会使其变得不必要地大。(多阶段构建可以避免这种情况,但它们相对较新。(

  • 更常见的使用情况是克隆需要凭据的专用存储库,很难避免将这些凭据泄漏到最终映像中。(同样,多阶段构建可以避免这种情况,但最好不要暴露安全性。(

最新更新