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