Spring Boot执行build-image报错:Request to write bytes exceeds size in header
问题排查与解决方案
原因分析
这个报错是Paketo Buildpacks与Docker daemon通信时的请求头部大小超限问题,仅在你的WSL2环境触发,大概率和WSL2的网络配置、Docker参数或文件系统挂载限制有关。
具体解决步骤
1. 增大Docker请求头部限制
编辑WSL2中的Docker配置文件/etc/docker/daemon.json(不存在则新建),添加以下配置:
{ "headers": { "Max-Header-Size": "65536" } }
保存后重启Docker服务:
sudo systemctl restart docker
该配置会提升Docker允许的请求头部大小,适配full-cf builder更大的构建上下文需求。
2. 迁移项目到WSL原生文件系统
避免将项目放在Windows NTFS挂载目录(如/mnt/c下的文件夹),这类挂载目录存在IO和权限限制,可能导致构建上下文传输异常。
将项目移动到WSL2的原生用户目录,比如~/projects/your-spring-app,再重新执行构建命令。
3. 更新WSL2内核版本
旧版WSL2内核可能存在网络或文件系统bug,执行以下命令更新:
wsl --update
更新完成后重启WSL2:
wsl --shutdown
重新打开WSL终端后再尝试构建。
4. 清理构建缓存
缓存损坏也可能引发异常,执行以下命令清理:
# 清理Docker镜像与缓存 docker system prune -af # 清理Paketo构建缓存 rm -rf ~/.paketo
清理后重新执行mvnw spring-boot:build-image。
5. 调整WSL2资源分配
如果WSL2内存不足,可能导致构建过程异常。在Windows系统下编辑%USERPROFILE%\.wslconfig文件,添加或修改资源配置:
[wsl2] memory=8GB processors=4
保存后重启WSL2,再尝试构建。
内容的提问来源于stack exchange,提问作者Tomas Laubr
相关产品推荐
相关产品推荐

