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

Mac M2运行docker-compose报错:openjdk:17-alpine镜像平台不兼容

问题:Docker-Compose运行失败,平台兼容性报错

执行命令 docker-compose up 后返回如下错误:

[+] Building 1.7s (4/4) FINISHED                                 docker:default
 => [web internal] load .dockerignore                                      0.0s
 => => transferring context: 2B                                            0.0s
 => [web internal] load build definition from Dockerfile                   0.0s
 => => transferring dockerfile: 701B                                       0.0s
 => ERROR [web internal] load metadata for docker.io/library/openjdk:17-a  1.7s
 => [web auth] library/openjdk:pull token for registry-1.docker.io         0.0s
------
 > [web internal] load metadata for docker.io/library/openjdk:17-alpine:
------
failed to solve: openjdk:17-alpine: no match for platform in manifest sha256:4b6abae565492dbe9e7a894137c966a7485154238902f2f25e9dbd9784383d81: not found

已知问题源于平台兼容性(Mac系统,镜像为Windows环境构建),已尝试添加 platform: linux/x86_64 参数、执行 rm ~/.docker/config.json 等方案,报错仍未解决。

当前配置文件内容

Dockerfile

#pulling base image and updating apk
FROM openjdk:17-alpine
RUN apk update && \
    apk add --no-cache tzdata

#making directory for jar and transfer it
RUN mkdir /opt/app
COPY target/dormitory_marketplace-0.0.1-SNAPSHOT.jar /opt/app/dm.jar
WORKDIR /opt/app

#running jar
CMD java -jar dm.jar

docker-compose.yml

version: "3"

services:
    web:
        build: .
        container_name: web
        ports:
            - "8080:8080"
        depends_on:
            - redis
        environment:
            REDIS_HOST: redis

    redis:
        container_name: redis
        image: "redis:latest"

解决方案

  • 更换基础镜像为多平台兼容版本
    OpenJDK 17-alpine部分镜像对Apple Silicon(arm64)支持不足,替换为Adoptium维护的Temurin镜像,修改Dockerfile第一行:

    FROM eclipse-temurin:17-alpine
    

    该镜像原生支持arm64和x86_64平台,适配性更强。

  • 在docker-compose.yml中明确构建平台
    在web服务的build配置下添加platform参数,强制指定构建平台:

    services:
        web:
            build:
                context: .
                platform: linux/x86_64 # 若为M系列Mac,也可尝试linux/arm64/v8
            # 其余配置保持不变
    
  • 清理缓存后重新构建
    执行命令清理旧缓存,避免残留镜像干扰:

    docker system prune -a
    docker-compose build --no-cache
    docker-compose up
    
  • 检查Docker Desktop设置
    打开Docker Desktop,进入设置 > 功能开发,启用使用新虚拟化框架;若为M系列Mac,在设置 > 资源 > 高级中开启Rosetta for x86/amd64 emulation on Apple Silicon,确保x86镜像能正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:05:22