Объем данных докера для зависимостей SBT
Я использую докер для непрерывной интеграции проекта Scala. Внутри контейнера я создаю проект и создаю дистрибутив с помощью "sbt dist".
На это уходит много веков, и я хотел бы использовать объем данных докера, как упомянуто здесь: http://docs.docker.io/en/latest/use/working_with_volumes/
Однако я не понимаю, как я могу заставить SBT поместить файлы jar в том или как SBT узнает, как их читать с этого тома.
2 ответа
SBT использует плющ для разрешения зависимостей проекта. Кэши Ivy загружают артефакты локально, и каждый раз, когда его просят что-то извлечь, он сначала отправляется в этот кеш и, если ничего не найдено, загружается с удаленного компьютера. По умолчанию кеш находится в ~/.ivy2
, но на самом деле это настраиваемое свойство. Так что просто смонтируйте том, наведите на него плющ (или смонтируйте так, чтобы он находился в месте по умолчанию) и наслаждайтесь кэшем.
Не уверен, имеет ли это смысл на сервере интеграции, но при разработке на localhost я сопоставляю хост .ivy2/
а также .sbt/
каталоги с томами в контейнере, вот так:
docker run ... -v ~/.ivy2:/root/.ivy2 -v ~/.sbt:/root/.sbt ...
(Видимо, внутри контейнера, .ivy2/
а также .sbt/
помещены в /root/
, поскольку мы входим в контейнер как пользователь root.)