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

Docker Compose在Mac上运行时出现空指针引用崩溃问题求助

M1 Mac上Docker Compose构建出现空指针panic问题排查与解决

问题详情

单体仓库配置的Docker Compose在Linux机器上正常运行,但在M1 Mac执行docker compose up时触发空指针panic,错误栈指向Docker Buildx组件。

目录结构

.env
docker-compose.yaml
/client
    Dockerfile
    packages.json
    /src
    /public

docker-compose.yaml

version: "3.9"

services:
  reactjs:
    build: ./client
    container_name: reactjs
    ports:
      - "3000:3000"
    # volumes:
    #   - reactjs-data:/var/www

client/Dockerfile

FROM    node:alpine

EXPOSE  3000

RUN     apk add --no-cache bash
RUN     apk update
RUN     apk upgrade

WORKDIR /var/www

CMD     npm run start

错误日志

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x39 pc=0x10526d690]

goroutine 11 [running]:
github.com/docker/buildx/builder.(*Builder).Validate(0x10646d8a0?)
        github.com/docker/buildx@v0.10.4/builder/builder.go:111 +0x20
github.com/docker/buildx/builder.New({0x10646d8a0?, 0x140000cc100}, {0x0, 0x0, 0x1400027ad50?})
        github.com/docker/buildx@v0.10.4/builder/builder.go:101 +0x290
github.com/docker/compose/v2/pkg/compose.(*composeService).doBuildBuildkit(0x1400052e360, {0x10645cd80, 0x14000532aa0}, 0x0?, {0x105c0f2b3, 0x4})
        github.com/docker/compose/v2/pkg/compose/build_buildkit.go:36 +0x68
github.com/docker/compose/v2/pkg/compose.(*composeService).build.func1({0x10645cd80, 0x14000532aa0}, {0x14000360e60, 0x7})
        github.com/docker/compose/v2/pkg/compose/build.go:112 +0x5b4
github.com/docker/compose/v2/pkg/compose.(*graphTraversal).run.func1()
        github.com/docker/compose/v2/pkg/compose/dependencies.go:127 +0x5c
golang.org/x/sync/errgroup.(*Group).Go.func1()
        golang.org/x/sync@v0.1.0/errgroup/errgroup.go:75 +0x5c
created by golang.org/x/sync/errgroup.(*Group).Go
        golang.org/x/sync@v0.1.0/errgroup/errgroup.go:72 +0xa0

环境信息

Docker version 23.0.5, build bc4487a
Docker Compose version v2.17.3
MacBook Pro M1 16Go, macOs Ventura 13.0.1
Docker Desktop is running, version Docker Desktop 4.19.0 (106363)

解决步骤

1. 临时禁用BuildKit

该panic是BuildKit在M1架构下的兼容性bug,临时禁用即可绕过:

DOCKER_BUILDKIT=0 docker compose up

2. 永久禁用BuildKit(可选)

修改~/.docker/config.json,添加以下配置后重启Docker Desktop:

{
  "features": {
    "buildkit": false
  }
}

3. 更新Docker Desktop到最新版本

旧版本Docker Desktop的BuildKit组件存在M1架构适配问题,更新到最新版本可修复该bug:
打开Docker Desktop → 设置 → 检查更新,安装完成后重启应用。

4. 指定容器平台架构

在docker-compose.yaml中明确指定服务的平台架构,强制匹配M1的arm64:

services:
  reactjs:
    build:
      context: ./client
      platform: linux/arm64
    container_name: reactjs
    ports:
      - "3000:3000"

5. 重置Buildx Builder配置

若之前手动配置过Buildx Builder,可能存在配置异常:

  • 列出当前builder:
    docker buildx ls
    
  • 删除异常builder:
    docker buildx rm <builder-name>
    
  • 重建默认builder:
    docker buildx create --use
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:40:00