You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple Silicon(M1 Max)上Spring Boot Buildpacks构建amd64镜像失败

M1 Max构建Linux/amd64 Spring Boot Docker镜像失败解决办法

问题背景

从Intel架构MacBook更换为M1 Max设备后,使用Spring Boot Maven插件或直接通过pack命令构建部署到Linux服务器的linux/amd64架构Docker镜像时失败,报错提示镜像摘要找不到。已启用Rosetta,环境为Spring Boot 3.4.4、Docker Desktop 4.39.0。

核心报错信息

[INFO]     [creator]     ERROR: failed to export: saving image: failed to fetch base layers: saving image with ID "sha256:0c5ac79d549c4b077a7d857631f817f8b573f5da2c109a51f320ee584d44d3f2" from the docker daemon: Error response from daemon: unable to create manifests file: NotFound: content digest sha256:05cbce61634362ddc82e0d3ce86a6c812f0b2423070acecd8819c035ef8be68d: not found
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:3.4.4:build-image (default-cli) on project my-project: Execution default-cli of goal org.springframework.boot:spring-boot-maven-plugin:3.4.4:build-image failed: Builder lifecycle 'creator' failed with status code 62 -> [Help 1]

解决步骤

1. 清理Docker缓存

跨架构构建时旧缓存易导致层摘要不匹配,执行以下命令彻底清理:

docker system prune -a -f

2. 确认Docker Desktop的Rosetta仿真配置

打开Docker Desktop -> 设置 -> Features in development,确保Use Rosetta for x86/amd64 emulation on Apple Silicon选项已勾选(即使已安装Rosetta,Docker可能未启用该仿真)。

3. 强制拉取最新构建器镜像

无论是用Spring Boot插件还是pack命令,都强制拉取最新的构建器镜像,避免旧镜像的架构兼容问题:

  • 对于pack命令,添加--pull-policy always参数:
    pack build --platform linux/amd64 --builder paketobuildpacks/builder-jammy-java-tiny:latest --pull-policy always --path target/my-app-1.1.0-SNAPSHOT.jar my-project
    
  • 对于Spring Boot Maven插件,在pom.xml的image配置中加入拉取策略:
    <image>
        <name>${MODULE_DOCKER_IMAGE_NAME}</name>
        <publish>${MODULE_DOCKER_PUBLISH}</publish>
        <imagePlatform>${MODULE_DOCKER_PLATFORM}</imagePlatform>
        <pullPolicy>ALWAYS</pullPolicy>
    </image>
    

4. 改用Docker Buildx构建

如果上述方法无效,尝试用Docker官方的Buildx工具直接构建:

  1. 创建并使用Buildx构建器:
    docker buildx create --use
    
  2. 编写基础Dockerfile(放在项目根目录):
    FROM eclipse-temurin:21-jre-jammy
    COPY target/my-app-1.1.0-SNAPSHOT.jar app.jar
    EXPOSE 8080
    ENTRYPOINT ["java","-jar","/app.jar"]
    
  3. 执行构建命令:
    docker buildx build --platform linux/amd64 -t ***/my-image:1.1.0 . --load
    

5. 调整Docker Desktop版本

部分Docker Desktop新版本存在跨架构构建bug,可尝试降级到4.38.x版本,或升级到最新稳定版测试。

内容的提问来源于stack exchange,提问作者gWombat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:07:03