内部带有 WebJars 的 SBT 增量编译 Docker

SBT incremental compilation with WebJars inside Docker

我正在开发 Play!具有 Angular 2 和 webjars 依赖项的应用程序。 SBT 播放插件和打字稿插件。我使用增量编译,但每次重新编译都会花费大量时间。我设置 "sbt-optimizer" 来检查哪些任务最长。我看到在每次重新编译时,WebJars 都占用了几乎所有的重新编译时间。我无法想象为什么他需要在第一次编译后对静态文件做些什么。但即使我更改了 scala 文件或 twirl 模板,所有 webjars 都没有关系。

更新: 如果我在没有 Docker 的机器上 运行 那么速度是正常的 - 重新编译需要几秒钟。 里面 Docker - 200 秒+。

编译消息没有 docker - 2s,内部 docker - 13s。 屏幕上的操作没有 docker 10-300ms inside docker 500-60000ms.

更新: 添加我的 docker 文件

FROM openjdk:8

ENV SCALA_VERSION=2.12.1
ENV SBT_VERSION=0.13.13
ENV NODEJS_VERSION=6.10.0

# Install sbt
RUN cd /tmp && \
wget https://dl.bintray.com/sbt/native-packages/sbt/$SBT_VERSION/sbt-$SBT_VERSION.zip && \
unzip sbt-$SBT_VERSION.zip -d /usr/local && \
rm sbt-$SBT_VERSION.zip

#install nodejs for web jars
RUN cd /tmp && \
wget https://nodejs.org/dist/v$NODEJS_VERSION/node-v$NODEJS_VERSION-linux-x64.tar.xz && \
tar -C /usr/local --strip-components 1 -xJf node-v$NODEJS_VERSION-linux-x64.tar.xz &&
rm node-v$NODEJS_VERSION-linux-x64.tar.xz

这是优化器的打印输出:

可能是我遗漏了什么,或者有人遇到过这样的问题,为什么 SBT 每次都这样做,我该如何预防?

谢谢

如果您 运行 在 Docker 上挂载卷 Mac,您的挂载卷性能可能达到 this issue