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

M1芯片更新Docker Desktop 4.2.0后Ubuntu+MySQL镜像构建/bin/sh报错问询

故障根因

  • 若你使用的是Arm架构设备(如M系列芯片Mac),Docker更新后QEMU架构模拟的兼容性下降,原来通过模拟运行amd64镜像时,gnupg、apt-key等加密相关工具会触发段错误
  • Node.js 15.x是已停止维护的历史版本,官方Arm架构源已下线,拉取包时会出现校验失败问题
  • ondrej/php的PPA源对21.04、22.04等高版本Ubuntu的Arm架构适配不完整,导致PHP7.4依赖无法安装

解决方案1(兼容原有配置,无代码改动风险)

  • 第一步:修改Dockerfile首行,直接在基础镜像声明中指定架构,优先级高于docker-compose配置:
    FROM --platform=linux/amd64 ubuntu:20.04
    
  • 第二步:在首个apt-get install命令开头添加apt-utils,避免debconf配置警告:
    原命令开头apt-get install -y gnupg gosu curl...修改为
    apt-get install -y apt-utils gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 \
    
  • 第三步:替换所有废弃的apt-key操作,避免模拟环境下gpg段错误:
    原两处apt-key adv导入PHP源密钥的代码替换为:
    curl -fsSL https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xE5267A6C | gpg --dearmor > /etc/apt/trusted.gpg.d/ondrej-php1.gpg \
    && curl -fsSL https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC300EE8C | gpg --dearmor > /etc/apt/trusted.gpg.d/ondrej-php2.gpg \
    
    原Yarn源密钥导入代码curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -替换为:
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/yarn.gpg \
    
  • 第四步:清理缓存重新构建:
    执行命令docker-compose build --pull --no-cache

解决方案2(原生Arm架构运行,性能更高)

  • 基础镜像使用官方Ubuntu 20.04,无需手动指定架构,Docker会自动拉取适配本地架构的镜像:
    FROM ubuntu:20.04
    
  • 替换Node.js 15.x安装源为仍在维护的LTS版本源,把原curl -sL https://deb.nodesource.com/setup_15.x | bash -替换为:
    curl -sL https://deb.nodesource.com/setup_16.x | bash -
    
  • 为PHP源添加Arm架构标识,原PPA地址声明代码修改为:
    echo "deb [arch=arm64] http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
    
  • 同样按照方案1的步骤替换所有apt-key操作,清理缓存后重新构建即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:03