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

dea*_*ger 5 gradle docker dockerfile gradle-daemon

我有以下 Dockerfile:

FROM gradle:6.3-jdk8 as builder
WORKDIR /
COPY . /
RUN gradle shadow --no-daemon
EXPOSE 9999
CMD ["java", "-jar", "search-all.jar"]
Run Code Online (Sandbox Code Playgroud)

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

tho*_*est 8

这个问题已经在 Gralde 论坛上有了广泛的答案:Using \xe2\x80\x93no-daemon,但仍然看到一个名为 \xe2\x80\x9cGradle Worker Daemon 1\xe2\x80\x9d 的进程

\n\n

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

\n\n

来自 Gradle 论坛的原始答案:

\n\n
\n
\n

我的问题是为什么当我们指定 --no-daemon 时会创建守护进程?

\n
\n\n

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

\n\n

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

\n
\n