M1芯片下Docker构建CentOS7镜像安装PHP7时Webtatic源404报错
问题原因
你遇到的报错核心是Apple M1芯片属于arm64(aarch64)架构,默认拉取的centos:7镜像也是arm64版本,但你使用的webtatic源仅提供x86_64架构的安装包,没有适配arm64架构的包,请求对应路径的mirrorlist时就会返回404。你朋友的设备是x86_64架构,匹配源的支持范围所以可以正常运行。
解决方案
方案1:强制使用x86_64架构构建镜像(无需修改Dockerfile,兼容性最佳)
构建时添加--platform linux/amd64参数指定架构,Docker会通过QEMU转译运行x86程序:
docker build --platform linux/amd64 -t <你的自定义镜像名> .
如果运行容器也需要指定架构,加上同样的参数即可:
docker run --platform linux/amd64 <其他运行参数> <镜像名>
方案2:替换为支持arm64架构的PHP源(原生运行性能更好)
修改Dockerfile中PHP安装部分的代码,替换webtatic源为支持arm64的Remi源即可正常安装:
# 替换原有安装php的RUN段 RUN \ rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \ rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm && \ yum install -y yum-utils && \ yum-config-manager --enable remi-php70 && \ yum install -y php php-devel php-pear && \ ln -s /usr/bin/php /usr/bin/php5
该方案原生适配arm64架构,运行性能更高,无需转译开销。
内容的提问来源于stack exchange,提问作者Srinivas
相关产品推荐
相关产品推荐

