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

Docker构建失败:COPY --from=composer时清单媒体类型不匹配

问题分析与解决方法

问题根源

你遇到的错误是因为AWS CodeBuild使用的Docker/容器运行时版本较旧,不支持OCI格式的镜像清单,而composer官方镜像更新后切换到了OCI格式(application/vnd.oci.image.manifest.v1+json);本地Docker版本较新,天然支持OCI格式,所以本地构建正常。

可行修复方案

方案1:指定composer镜像的具体旧版本

避免使用latest标签,改用一个仍使用Docker v2清单格式的稳定版本,比如composer:2.5(可根据Docker Hub上的composer标签历史选择合适版本)。修改Dockerfile中的对应步骤:

COPY --from=composer:2.5 /usr/bin/composer /usr/local/bin/composer

方案2:升级CodeBuild的环境镜像

将你的CodeBuild项目使用的环境镜像替换为最新的标准镜像,比如aws/codebuild/standard:6.0或更高版本。这些新版本的环境镜像中包含的Docker版本已支持OCI格式的镜像清单,能正常拉取composer的最新镜像。

方案3:手动转换镜像格式并存储到ECR

如果必须使用composer最新版本,可在本地将镜像转换为兼容格式后推送到你的AWS ECR仓库:

  1. 本地拉取最新镜像:docker pull composer:latest
  2. 标记镜像为你的ECR地址:docker tag composer:latest <你的ECR仓库地址>/composer:latest
  3. 推送到ECR:docker push <你的ECR仓库地址>/composer:latest
  4. 修改Dockerfile中的步骤为:COPY --from=<你的ECR仓库地址>/composer:latest /usr/bin/composer /usr/local/bin/composer

补充说明

  • docker manifest inspect composer返回"no such manifest"是因为composer是官方镜像的简称,需要带完整仓库名library/composer,执行docker manifest inspect library/composer才能看到清单信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:42:34