Docker部署卡在‘Starting a Gradle Daemon’的问题求助
解决方案
1. 更换为ARM64兼容的Gradle基础镜像
你的Dockerfile使用maven:3.6.3-jdk-11作为构建镜像,该镜像是x86架构,在M1系列ARM芯片上依赖Rosetta转译,易引发进程冻结问题。建议直接使用官方Gradle的ARM兼容镜像:
# 替换原build阶段的镜像 FROM gradle:7.5-jdk11 as build
若需强制使用x86镜像,可添加平台声明(需确保Docker Rosetta转译已开启):
FROM --platform=linux/amd64 gradle:7.5-jdk11 as build
2. 禁用Gradle Daemon执行构建
在构建命令中添加--no-daemon参数,跳过守护进程初始化,避免卡在Daemon启动环节:
RUN ./gradlew clean build -x integrationTest -x test --no-daemon
3. 添加.dockerignore减少构建上下文
创建.dockerignore文件,排除不必要的目录和文件,减少镜像拷贝内容,避免干扰Gradle构建:
.git .gradle build *.log src/test/resources src/integration-test/resources
4. 配置Gradle JVM参数解决熵池阻塞
在Gradle构建命令前设置环境变量,解决随机数生成导致的阻塞问题:
ENV GRADLE_OPTS="-Xmx1024m -Djava.security.egd=file:/dev/./urandom" RUN ./gradlew clean build -x integrationTest -x test --no-daemon
5. 调整Docker资源分配
打开Docker Desktop设置→Resources,将CPU分配提升至4核以上、内存分配提升至8G以上,M1芯片资源不足会导致构建进程无响应。
6. 本地验证Gradle构建正常
先在本地终端执行./gradlew clean build -x integrationTest -x test --no-daemon,确认本地构建能正常完成,排除项目本身配置问题。
内容的提问来源于stack exchange,提问作者Andrzej Pazdalski
相关产品推荐
相关产品推荐

