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

Mac M1环境下Docker构建出现manifest匹配失败问题求助

问题原因

Mac M1属于ARM64架构,你使用的adoptopenjdk/openjdk11:jre-11.0.11_9-alpine镜像仅提供AMD64(x86)架构版本,Docker无法找到匹配ARM64的镜像manifest,因此报错。

解决方案

方案1:指定平台构建(兼容原有镜像)

在Dockerfile的FROM指令中添加平台指定,强制使用AMD64架构镜像,Docker会通过QEMU模拟运行:

FROM --platform=linux/amd64 adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
VOLUME /tmp
COPY build/libs/*.jar myapp.jar
ENTRYPOINT ["java", "-Xmx800m", "-XX:+UseG1GC", "-jar", "-Dspring.profiles.active=cloud", "/myapp.jar"]

或者在构建命令中直接指定平台:

docker build --platform linux/amd64 -t myapp .

提示:开启Docker Desktop的「Use Rosetta for x86/amd64 emulation on Apple Silicon」选项(设置->Features in development),可以提升模拟运行的性能。

方案2:替换为支持ARM64的官方镜像

AdoptOpenJDK已迁移至Eclipse Temurin,后者提供多架构镜像,会自动适配M1的ARM64架构,无需模拟,性能更优。修改Dockerfile的基础镜像:

FROM eclipse-temurin:11-jre-alpine
VOLUME /tmp
COPY build/libs/*.jar myapp.jar
ENTRYPOINT ["java", "-Xmx800m", "-XX:+UseG1GC", "-jar", "-Dspring.profiles.active=cloud", "/myapp.jar"]

额外修正:修复ENTRYPOINT路径错误

原Dockerfile中ENTRYPOINT指定的/myApp.jar为大写开头,但COPY命令生成的是小写的myapp.jar,会导致容器启动时找不到jar包,需统一为/myapp.jar。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:42:56