OpenClaw 部署:从 Docker 安装到优雅定制环境
选择 Docker 的核心原因是:它能把 OpenClaw 和依赖环境封装在独立容器里,避免污染宿主机系统,也不会和本机 Python、Node 等环境产生冲突;一旦配置出错,可以快速删除容器并重建,试错成本很低;同时 Docker 具备良好的跨平台一致性,无论部署在 Windows、Mac、NAS 还是软路由上,运行环境都尽量保持一致,从而减少因系统差异带来的各种“玄学问题”。
1 为什么需要这篇教程?
- 依赖清零:进入运行中的容器用
apt-get install 安装了工具,结果容器一重启,刚装的工具全没了。这是因为 Docker 容器本身是无状态的。
- 升级冲突:为了永久保留工具,新手会直接修改项目自带的
Dockerfile 将依赖“烘焙”进去。然而等官方出新版本,运行 git pull 升级时,立刻爆出数十个代码合并冲突。
2 安装
1 2
| git clone https://github.com/openclaw/openclaw.git cd openclaw
|
1 2
| ./scripts/docker/setup.sh
|
- 在当前项目根目录下新建
Dockerfile.custom 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| FROM ghcr.io/openclaw/openclaw:latest
USER root
RUN apt-get update && apt-get install -y \ wget \ curl \ vim \ && rm -rf /var/lib/apt/lists/*
USER node
|
- 同样位置新建
docker-compose.override.yml 。
1 2 3 4 5 6 7 8
| services: openclaw-gateway: image: openclaw-gateway:custom build: context: . dockerfile: Dockerfile.custom
|
1
| OPENCLAW_IMAGE=openclaw-gateway:custom
|
3 启动
1 2 3 4 5
| docker compose build openclaw-gateway
docker compose up -d openclaw-gateway
|
等待运行完成后,你的自定义工具 (如 curl, vim) 已经永久烙印在 OpenClaw 容器内部!无论重启多少次或者迁移服务器都完好无缺。
4 升级版本
1 2 3 4 5 6 7 8
| git pull
docker compose build openclaw-gateway
docker compose up -d openclaw-gateway
|
采用这套架构后,你在本地的开发环境拥有了极强的生命力。由于你的自定义操作全部分散在互不干涉的新文件里(Dockerfile.custom 等),从头到尾你都没有碰过任何一个官方自带的代码文件。
文件跨系统时,Git 经常会错误识别一大堆文件权限发生改变(从 644 变成 755),导致你后续无法拉取更新。解决方案-> git config core.fileMode false