Appearance
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 均有效。