我正在使用docker来持续集成Scala项目。在容器内部,我正在构建项目并使用“sbt dist”创建分发。
这需要花费很长时间来拉下所有依赖项,我想使用这里提到的docker数据卷:http://docs.docker.io/en/latest/use/working_with_volumes/
但是,我不明白如何让SBT将jar文件放入卷中,或者SBT如何知道如何从该卷读取它们。
答案 0 :(得分:11)
SBT使用常春藤解决项目依赖关系。 Ivy在本地缓存下载的工件,每次被要求拉取东西时,它首先进入缓存,如果没有找到从远程下载的东西。默认情况下,缓存位于~/.ivy2
,但它实际上是configurable属性。所以只需安装卷,将常春藤指向它(或以默认位置安装它)并享受缓存。
答案 1 :(得分:7)
不确定这在集成服务器上是否有意义,但在localhost上进行开发时,我将主机的.ivy2/
和.sbt/
目录映射到容器中的卷,如下所示:
docker run ... -v ~/.ivy2:/root/.ivy2 -v ~/.sbt:/root/.sbt ...
(显然,在容器内,.ivy2/
和.sbt/
放在/root/
中,因为我们以root用户身份登录到容器。)