Skip to content

Docker 容器内安装 Skill 报 brew not installed

问题

在官方 Docker 容器内运行 openclaw onboard 并选择基于 Homebrew 的 Skill(如 openai-whisper)时,安装立即失败并报错:

brew not installed

官方 Docker 镜像基于 Linux,未预装 Homebrew,但 Skill 安装系统默认尝试用 brew install 安装依赖。

解决方案

方法 1:使用带 Homebrew 的自定义 Docker 镜像

构建一个在 OpenClaw 基础镜像上叠加 Homebrew 的自定义镜像:

dockerfile
# 从社区维护的 Homebrew-on-Linux 镜像引入 brew
FROM scratch AS brew
COPY --from=ghcr.io/ublue-os/brew:latest /system_files /

FROM openclaw/openclaw:latest

# 从 brew 阶段复制必要文件
COPY --from=brew /home/linuxbrew /home/linuxbrew
ENV PATH="/home/linuxbrew/.linuxbrew/bin:${PATH}"

方法 2:使用 Bind Mount 挂载 Homebrew(推荐,可持久化 Skill)

将宿主机上的 Homebrew 目录通过 bind mount 挂载进容器,同时挂载 Skill 目录以在容器重建时保留已安装的 Skill:

yaml
# docker-compose.yml
services:
  openclaw:
    image: openclaw/openclaw:latest
    volumes:
      - /home/linuxbrew/.linuxbrew:/home/linuxbrew/.linuxbrew
      - ~/.openclaw/workspace/skills:/root/.openclaw/workspace/skills
    environment:
      - PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

优势:容器镜像不膨胀,Skill 在容器更新后仍然保留。

方法 3:手动安装 Skill 依赖并跳过 brew

如果 Skill 的实际依赖是 apt 可提供的包,可以先在容器内手动安装,然后在 Skill 配置中跳过 brew 安装步骤:

bash
# 进入容器
docker exec -it openclaw bash

# 用 apt 安装依赖
apt-get update && apt-get install -y ffmpeg

# 然后重新运行 onboard 或手动触发 Skill

方法 4:设置环境变量启用 brew(一键脚本)

部分社区维护的 docker-setup.sh 脚本支持通过环境变量触发 brew 安装:

bash
OPENCLAW_INSTALL_BREW=1 bash docker-setup.sh

说明:此为已知的长期问题,官方正在讨论为 Docker 镜像提供 openclaw:brew 变体版本。在官方解决方案落地前,以上 workaround 均有效。