Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

选择 Docker 的核心原因是:它能把 OpenClaw 和依赖环境封装在独立容器里,避免污染宿主机系统,也不会和本机 Python、Node 等环境产生冲突;一旦配置出错,可以快速删除容器并重建,试错成本很低;同时 Docker 具备良好的跨平台一致性,无论部署在 Windows、Mac、NAS 还是软路由上,运行环境都尽量保持一致,从而减少因系统差异带来的各种“玄学问题”。

1 为什么需要这篇教程?

  1. 依赖清零:进入运行中的容器用 apt-get install 安装了工具,结果容器一重启,刚装的工具全没了。这是因为 Docker 容器本身是无状态的。
  2. 升级冲突:为了永久保留工具,新手会直接修改项目自带的 Dockerfile 将依赖“烘焙”进去。然而等官方出新版本,运行 git pull 升级时,立刻爆出数十个代码合并冲突。

2 安装

  1. 拉取项目源码

1
2
git clone https://github.com/openclaw/openclaw.git
cd openclaw

  1. 跟随官方文档先跑通配置)

1
2
# 从仓库根目录运行设置脚本
./scripts/docker/setup.sh

  1. 创建专属底层,防止污染源代码

  • 在当前项目根目录下新建 Dockerfile.custom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 继承官方最新镜像作为地基
FROM ghcr.io/openclaw/openclaw:latest

# 2. 切换到 root 权限来安装系统级别的依赖
USER root

# 3. 这里写你想要安装的软件!例如安装 wget, curl, vim 或其他需要的库
RUN apt-get update && apt-get install -y \
wget \
curl \
vim \
&& rm -rf /var/lib/apt/lists/*

# 4. 依赖装完后,务必切回默认的安全运行身份,防止越权
USER node
  • 同样位置新建 docker-compose.override.yml
1
2
3
4
5
6
7
8
services:
openclaw-gateway:
# 告诉 Docker 用我们自己的镜像名称
image: openclaw-gateway:custom
build:
context: .
# 指向刚才创建的自定义镜像打包脚本
dockerfile: Dockerfile.custom
  • 修改env中镜像名称
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
# 1. 拉取最新官方代码库(因为核心文件0改动,绝对不会报错)
git pull

# 2. 基于新的官方底层,顺手加上你的那些自定义工具重新成新底座
docker compose build openclaw-gateway

# 3. 后台重启应用最新镜像
docker compose up -d openclaw-gateway

采用这套架构后,你在本地的开发环境拥有了极强的生命力。由于你的自定义操作全部分散在互不干涉的新文件里(Dockerfile.custom 等),从头到尾你都没有碰过任何一个官方自带的代码文件

文件跨系统时,Git 经常会错误识别一大堆文件权限发生改变(从 644 变成 755),导致你后续无法拉取更新。解决方案-> git config core.fileMode false

评论