使用Jib Maven插件构建Spring Boot镜像时遇416错误求助
问题描述
我正在尝试将一个连接PostgreSQL的Spring Boot API容器化,使用Jib Maven插件构建并推送镜像到Docker Hub,但执行mvn clean package -DskipTests时持续失败,错误为416 Requested Range Not Satisfiable,响应提示RANGE_INVALID/invalid content range。更奇怪的是,之前能正常工作的讲师POM文件现在也报同样错误,甚至用Spring Initializer新建的极简Spring Boot项目加Jib插件也会出错。
环境信息
- Java版本:Amazon Corretto 17.0.12(JAVA_HOME=C:\Users\richa.jdks\corretto-17.0.12)
- Maven版本:3.9.8(MAVEN_HOME=C:\Program Files\Apache\Maven\apache-maven-3.9.8)
- Jib插件版本:3.4.3
- 操作系统:Windows
Jib插件配置
<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.4.3</version> <configuration> <from> <image>eclipse-temurin:22</image> <platforms> <platform> <architecture>arm64</architecture> <os>linux</os> </platform> <platform> <architecture>amd64</architecture> <os>linux</os> </platform> </platforms> </from> <to> <image>docker.io/${docker.username}/${project.artifactId}:${project.version}</image> <tags> <tag>latest</tag> </tags> </to> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> </plugin>
关键错误日志
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:3.4.3:build (default) on project korfballteamapi: 416 Requested Range Not Satisfiable
[ERROR] PATCH https://registry-1.docker.io/v2/rsmithuchot1/korfballteamapi/blobs/uploads/...
[ERROR] {"errors":[{"code":"RANGE_INVALID","message":"invalid content range"}]}
已尝试操作
- 确认Docker Hub登录状态正常(已通过
docker login认证) - 检查镜像路径无大写字符
- 调整Jib插件的基础镜像、平台配置,问题依旧
可能的解决方向
升级Jib插件版本
Jib 3.4.3是2022年的旧版本,后续版本修复了不少与Docker Hub上传相关的问题,建议升级到最新稳定版(比如3.4.5或更高),修改POM里的Jib版本号后重试。禁用分块上传
这个错误通常和分块上传的范围校验有关,在Jib配置里添加扩展禁用分块上传:<configuration> <!-- 保留原有from/to等配置 --> <pluginExtensions> <pluginExtension> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin-extension-extra</artifactId> <version>0.1.0</version> <configuration> <disableChunkedUpload>true</disableChunkedUpload> </configuration> </pluginExtension> </pluginExtensions> </configuration>检查网络代理/防火墙
Windows环境下的代理或防火墙可能干扰分块上传的请求范围,尝试关闭代理、防火墙后重试,或者在Maven的settings.xml中配置正确的代理参数。清理本地缓存
- 清理Docker本地缓存:执行
docker system prune -a - 清理Maven本地Jib缓存:删除
~/.m2/repository/com/google/cloud/tools目录后重新构建
- 清理Docker本地缓存:执行
匹配基础镜像与项目Java版本
当前使用的eclipse-temurin:22是Java22版本,而项目使用Java17,版本不匹配可能导致镜像层异常。建议换成对应Java17的基础镜像:<from> <image>eclipse-temurin:17-jre-alpine</image> <platforms> <platform> <architecture>arm64</architecture> <os>linux</os> </platform> <platform> <architecture>amd64</architecture> <os>linux</os> </platform> </platforms> </from>
内容的提问来源于stack exchange,提问作者Richard Smith-Uchotski

