Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker容器中高效的svn签出_Docker_Svn_Docker Compose - Fatal编程技术网

docker容器中高效的svn签出

docker容器中高效的svn签出,docker,svn,docker-compose,Docker,Svn,Docker Compose,我想签出docker容器中的一些文件(特别是测试套件) 现在我只使用runsvncohttp://llvm.org/svn/llvm-project/test-suite/trunk train.out/llvm测试套件内部Dockerfile 它可以工作,但看起来效率不高:在加载测试时,我需要在每个docker组件上等待约5分钟。 有没有更好的方法防止Docker每次都签出此文件?目前我看到的唯一选择是将文件包含到容器中。您通常不会从Dockerfile中运行源代码管理工具。在主机目录中检查它

我想签出docker容器中的一些文件(特别是测试套件)

现在我只使用
runsvncohttp://llvm.org/svn/llvm-project/test-suite/trunk train.out/llvm测试套件
内部Dockerfile

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

您通常不会从Dockerfile中运行源代码管理工具。在主机目录中检查它们(更好的做法是,如果您能够管理它,将
Dockerfile
直接添加到您尝试构建的存储库中),然后运行
docker build
,将其所有输入直接放在磁盘上

这有几个很好的理由:

  • Docker映像缓存通常意味着Docker不会重复“克隆”、“签出”或“拉取”类型的操作:它知道它已经完成了一次,并且已经知道它的输出并跳过该步骤,即使您没有新的提交

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

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


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

这有几个很好的理由:

  • Docker映像缓存通常意味着Docker不会重复“克隆”、“签出”或“拉取”类型的操作:它知道它已经完成了一次,并且已经知道它的输出并跳过该步骤,即使您没有新的提交

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

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


我对svn知之甚少,但将签出的项目目录作为卷附加到容器中并没有帮助?一个有趣的问题是,为什么Docker层缓存不缓存它。您通常不希望这样(即使远程存储库中发生了更改,它也不会重复
svn co
),但正如您所描述的,应该发生的事情和Docker不应该自己重复这一步骤。我对svn知之甚少,但是将签出的项目目录作为卷附加到容器中并没有帮助?一个有趣的问题是为什么Docker层缓存不缓存它。您通常不希望这样(即使远程存储库中发生了更改,它也不会重复
svn co
),但正如您所描述的,应该发生的事情和Docker不应该自己重复此步骤。