如何在 docker 中缓存 gradle?

usb*_*102 6 gradle docker

我正在尝试缓存我的 gradle 构建当前每次下载的内容。为此,我尝试使用 -v 选项安装卷,例如-v gradle_cache:/root/.gradle

问题是每次我使用 exat 相同的命令重新运行构建时,它仍然会再次下载所有内容。我用来运行图像的完整命令是

sudo docker run --rm -v gradle_cache:/root/.gradle -v "$PWD":/home/gradle/project -w /home/gradle/project gradle:jdk8-alpine gradle jar
Run Code Online (Sandbox Code Playgroud)

我还检查了 docker 保存卷内容的目录,/var/lib/docker/volumes/gradle_cache/_data但该目录也是空的。

我的控制台日志

为了让这个工作我缺少什么?

编辑:根据请求,我使用该--scan选项重新运行命令。

还有一个不同的 gradle home:

$ sudo docker run --rm -v gradle_cache:/root/.gradle -v "$PWD":/home/gradle/project -w /home/gradle/project gradle:jdk8-alpine gradle jar --gradle-user-home /root/.gradle

FAILURE: Build failed with an exception.

* What went wrong:
Failed to load native library 'libnative-platform.so' for Linux amd64.
Run Code Online (Sandbox Code Playgroud)

usb*_*102 6

查看我正在使用的容器的Dockerfile后,我发现正确的使用选项是-v gradle_cache:/home/gradle/.gradle.

让我认为这些文件被缓存的原因/root/.gradle是 Dockerfile 还将其设置为来自以下位置的符号链接/home/gradle/.gradle

ln -s /home/gradle/.gradle /root/.gradle

因此,在构建后检查文件系统会使文件看起来像是存储在那里。