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

GitHub Actions构建Docker镜像报错no matching manifest for linux/amd64的排查与解决

问题根源分析

你的问题主要来自两个核心原因:

  1. 基础镜像已停止维护:你使用的adoptopenjdk/openjdk11-openj9:latest镜像仓库已被官方归档(AdoptOpenJDK项目已迁移至Eclipse Temurin),导致GitHub Actions运行的ubuntu-latest(amd64架构)无法找到匹配的镜像manifest,这就是报错no matching manifest for linux/amd64的直接诱因。
  2. GitHub Action版本过时:docker/build-push-action@v1已被官方废弃,虽然之前能正常运行,但旧版本的兼容性和功能已跟不上当前Docker生态与GitHub环境的变化。

修复步骤

1. 替换Dockerfile中的基础镜像

将废弃的AdoptOpenJDK镜像替换为官方维护的Eclipse Temurin镜像(它是AdoptOpenJDK的继任者,支持amd64架构且持续更新):

# 替换原有的FROM行
FROM eclipse-temurin:11-jre-openj9

如果追求更稳定的环境,建议指定具体版本号(强烈推荐):

FROM eclipse-temurin:11.0.22_7-jre-openj9

2. 升级GitHub Action到最新稳定版

废弃的v1版本参数与新版不兼容,建议拆分登录和构建推送步骤(更清晰且符合最佳实践),使用最新的v5版本:

# 先登录到阿里云镜像仓库
- name: Login to Aliyun Docker Registry
  uses: docker/login-action@v3
  with:
    registry: ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}
    username: ${{ secrets.ALIYUN_DOCKER_REPO_USER_NAME }}
    password: ${{ secrets.ALIYUN_DOCKER_REPO_USER_PASSWORD }}

# 然后构建并推送镜像
- name: Build and push image to Aliyun
  uses: docker/build-push-action@v5
  with:
    context: ./dolphin-gateway  # 对应原来的path参数
    push: true
    tags: ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}/reddwarf-pro/dolphin-gateway:${{ github.sha }}

未来避免此类问题的建议

  • 拒绝使用latest标签:latest标签会自动拉取最新镜像,容易因镜像更新引发兼容性问题,尽量用具体版本号锁定基础镜像。
  • 定期更新GitHub Actions:关注官方Action的版本迭代,废弃版本会停止维护,及时升级到稳定的最新版本,降低兼容性风险。
  • 跟踪基础镜像官方动态:比如AdoptOpenJDK迁移到Eclipse Temurin这类重大变动,及时更换镜像源,避免使用已归档的仓库。
  • 提前验证基础镜像:在构建前添加拉取基础镜像的步骤,提前发现拉取失败问题,例如:
    - name: Validate base image
      run: docker pull eclipse-temurin:11-jre-openj9
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:02:49