MacBook(Apple M1 Pro)运行docker-compose up命令报错求助
在IntelliJ中执行命令 docker-compose up --scale service-promotions=0 启动项目时,遇到以下错误:
=> ERROR [internal] load metadata for docker.io/library/gradle:6.5.1-jdk11 2.7s
[internal] load metadata for docker.io/library/gradle:6.5.1-jdk11:
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest sha256:449a6385fa079f420cd7cd4ce34601740e046dfdcaaaf272d6cc5313104859df: not found
本地Java版本为 11.0.13 2021-10-19 LTS,此前未接触过Docker,已检查docker-compose.yml配置为dockerfile: Dockerfile,尝试过执行DOCKER_BUILDKIT=0命令,问题仍未解决。
这个错误是因为gradle:6.5.1-jdk11镜像不匹配当前系统的架构(比如ARM架构的Mac/Windows,而该镜像仅提供x86架构版本),可按以下方式解决:
指定镜像架构:明确指定镜像适配的平台,解决架构不兼容问题
- 若使用Dockerfile,在基础镜像行添加平台声明:
FROM --platform=linux/amd64 gradle:6.5.1-jdk11 - 若使用docker-compose.yml,在对应服务的build配置中添加platform字段:
services: # 替换为你的服务名称 target-service: build: context: . dockerfile: Dockerfile platform: linux/amd64
- 若使用Dockerfile,在基础镜像行添加平台声明:
更换兼容镜像:如果指定架构无效,可尝试使用支持当前系统架构的Gradle镜像,比如带
-alpine后缀的轻量镜像,或升级Gradle到7.x及以上版本(这类版本通常提供多架构支持)。检查Docker配置:打开Docker Desktop设置,确认开启了多架构镜像兼容选项(比如"Use the new Virtualization framework"相关设置)。
内容的提问来源于stack exchange,提问作者Sheetal Jain

