Объем данных докера для зависимостей 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.)

Другие вопросы по тегам