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

Apple M系列Mac用Docker部署Next.js(App目录+sharp)报错求助

Next.js + Sharp + M2 Docker构建Segmentation Fault问题解决

问题场景

Apple M2芯片Mac上,使用Next.js App目录结构开发,满足以下条件时Docker构建失败:

  • 项目采用App目录结构
  • 单页面加载超过5张图片
  • 引入sharp包
  • 通过Docker部署

核心报错日志:

qemu: uncaught target signal 11 (Segmentation fault) - core dumped
error Command failed with signal "SIGSEGV".

解决方法

1. 指定Docker构建平台

M2为arm64架构,Docker默认可能使用amd64镜像导致qemu模拟异常。构建时指定arm64平台:

  • 构建命令添加参数:
docker build --platform linux/arm64 -t your-project-image .
  • 或在Dockerfile开头声明平台:
FROM --platform=linux/arm64 node:20-alpine

2. 配置Sharp的arm64适配镜像

在项目根目录创建对应配置文件,指定Sharp的arm64兼容二进制源:

  • 若用npm,创建.npmrc:
sharp_binary_host=https://npmmirror.com/mirrors/sharp
sharp_libvips_binary_host=https://npmmirror.com/mirrors/sharp-libvips
  • 若用yarn,创建.yarnrc.yml:
sharp_binary_host: "https://npmmirror.com/mirrors/sharp"
sharp_libvips_binary_host: "https://npmmirror.com/mirrors/sharp-libvips"

之后强制重新安装依赖:

yarn install --force

3. 临时禁用Next.js图片优化(应急方案)

若无需Sharp的图片处理能力,可在next.config.js中禁用图片优化:

/** @type {import('next').NextConfig} */
const nextConfig = {
  images: {
    unoptimized: true,
  },
}

module.exports = nextConfig

⚠️ 此方案会丢失Next.js Image组件的自动压缩、格式转换等优化能力,仅适合临时测试。

4. 更新依赖到最新稳定版

升级Next.js和Sharp到最新版本,新版本通常会修复架构兼容问题:

yarn add next@latest sharp@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:04:53