Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何减少Docker WSL 2中的Java编译时间?_Java_Docker_Compilation_Windows Subsystem For Linux_Wsl 2 - Fatal编程技术网

如何减少Docker WSL 2中的Java编译时间?

如何减少Docker WSL 2中的Java编译时间?,java,docker,compilation,windows-subsystem-for-linux,wsl-2,Java,Docker,Compilation,Windows Subsystem For Linux,Wsl 2,我使用Windows,所以Docker有WSL2。 在我的项目中,我使用docker compose命令编译Java代码。 编译时间超过15分钟。Tomcat启动的情况也一样。 我试图在.wslconfig(6GB)中为WSL分配更多内存。 这对我不起作用 如何减少编译时间?在WSL2中处理大量文件时(Java项目经常这样做),性能的极端下降通常是由于文件位于Windows NTFS文件系统中(例如,在C:\下)。WSL2用于访问NTFS的9P协议驱动程序比本机性能慢得多。有关我的系统的比较,请

我使用Windows,所以Docker有WSL2。 在我的项目中,我使用docker compose命令编译Java代码。 编译时间超过15分钟。Tomcat启动的情况也一样。 我试图在
.wslconfig
(6GB)中为WSL分配更多内存。 这对我不起作用


如何减少编译时间?

在WSL2中处理大量文件时(Java项目经常这样做),性能的极端下降通常是由于文件位于Windows NTFS文件系统中(例如,在
C:\
下)。WSL2用于访问NTFS的9P协议驱动程序比本机性能慢得多。有关我的系统的比较,请参见此答案的结尾

您的Java项目是否在NTFS文件系统上?或者它是否位于WSL2实例中的虚拟
ext4
文件系统中?如果答案是NTFS,请考虑下列解决方案:

  • 将项目移动到WSL2实例中。请注意,将项目从其现有位置符号化到
    ext4
    文件系统将不起作用

  • 通常我会说“考虑WSL1”,但这意味着你会失去Docker。但是您可以在WSL中创建一个具有所需编译工具的发行版。(我没有这样做),您甚至可以
    docker导出容器,然后
    wsl——将它导入到一个新实例中。
    wsl--import
    命令允许您设置
    --version 1

  • 最后,我不确定这一点,但您可以尝试没有WSL2后端的Docker Desktop。在这种情况下,使用Hyper-V支持的Docker可能会更快

WSL2下
ext4
9P NTFS
的比较:

~/temp$ time git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel.git
Cloning into 'WSL2-Linux-Kernel'...
...
real    0m40.968s
user    0m8.711s
sys     0m3.795s


/mnt/c$ time git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel.git
Cloning into 'WSL2-Linux-Kernel'...
...
real    8m33.582s
user    0m19.286s
sys     0m42.802s

是的,我尝试了3d选项(打开Hyper-V。它在性能上对我很好,但我还有其他问题…)