'sbt〜run'显示它正在重新编译,但没有可见的更改

我和斯卡拉是相当新的,我正面临一个小问题。 我用scala(和其他所有)设置基于docker的虚拟机。 我的代码通过卷被泄漏。 当我跑步

sbt ~run 

第一次,所有的东西都被编译和工作。 但是,当我做任何代码更改时,日志显示代码正在重新编译,但我没有看到我正在工作的应用程序的任何更改。 如果我完全重新启动“sbt”,则会发生变化。

这可能是什么原因? 我确定我只运行一个'sbt'的实例:

 # ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 48828 6900 ? Ss 17:16 0:01 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf root 8 0.0 0.1 19752 2792 ? Ss 17:18 0:00 bash root 23 0.0 0.1 47588 2648 ? S 17:21 0:00 sudo su root 24 0.0 0.1 48204 2288 ? S 17:21 0:00 su root 25 0.0 0.1 19748 3196 ? S 17:21 0:00 bash root 9231 0.0 0.1 11384 3236 ? S+ 19:26 0:00 bash /usr/bin/sbt ~run root 9286 36.2 31.6 3009020 649292 ? Sl+ 19:26 4:48 java -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m -jar /usr/share/sbt-launcher-packaging/bin/sbt-launch.jar ~run root 9351 0.0 0.1 19752 3616 ? Ss 19:26 0:00 bash root 11101 0.0 0.1 17172 2492 ? R+ 19:39 0:00 ps aux 

我什么都不能想

谢谢,

Sbt使用JNotify来监视文件系统。 最有可能的是,基于Sbt的docker无法看到inotify事件(请参阅此处和docker问题 )。

在主机和docker容器之间共享数据的另一种常见方式是NFS,但不幸的是 ,至less如果NFS服务器在主机上, 不支持inotify ,docker机器将看不到更改。

我想你可以尝试在Docker容器上有一个NFS服务器,并连接到主机上的NFS服务器。 然后docker容器可能会看到文件的修改。

另一个可能的select是通过docker问题中描述的rsync通过networking进行更改。

—编辑—

Docker 4 Mac使用一个特殊的FS,将通知事件从主机发送到容器。 目前正处于内部testing阶段,但希望很快能够上市。