如何避免在 Dockerfile 中启动 Gradle 守护进程

How to avoid start of Gradle daemon inside Dockerfile

我有以下 Dockerfile:

FROM gradle:6.3-jdk8 as builder
WORKDIR /
COPY . /
RUN gradle shadow --no-daemon
EXPOSE 9999
CMD ["java", "-jar", "search-all.jar"]

我想避免 Gradle 守护程序在每次构建映像时启动。有没有可能或解决方法来实现这一目标?我提到了 --no-daemon 但它仍在启动。

这个问题在 Gralde 论坛上已经有了广泛的答案:Using –no-daemon, but still see a process called “Gradle Worker Daemon 1”

简而言之:Gradle 守护进程是执行构建并始终启动的进程,无论在命令行上指定了什么。如果指定 --no-daemon,则在构建完成后进程终止。

来自 Gradle 论坛的原始答案:

My question is why is the daemon being created when we specify --no-daemon?

运行 由 Gradle 执行构建的过程是相同的,无论您是否启用或禁用守护进程。构建完成后进程的行为是不同的。

启用守护进程后,该进程将在后台继续 运行ning,并可重复用于后续构建。在禁用守护程序的情况下,该过程在构建结束时终止。即使禁用了守护进程,您仍然会看到一个标记为守护进程的进程。这并不意味着它会像守护进程一样在后台继续 运行ning。