1. 项目概述
OpenClaw 是一个基于 TypeScript 开发的现代化网关系统,通过 Docker 容器化部署可以显著简化其部署和管理流程。作为一名长期从事容器化部署的运维工程师,我将在本文详细记录从源码编译到生产环境部署 OpenClaw 的完整过程,特别针对实际部署中常见的 Token 配置、跨设备访问等痛点问题提供解决方案。
这个部署方案特别适合以下场景:
- 需要快速搭建 API 网关的中小型团队
- 开发测试环境需要频繁部署和迁移的场景
- 对网关系统有定制化需求的 DevOps 团队
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与源码编译
2.1 基础环境配置
在开始编译前,需要确保部署机器满足以下基础要求:
- Docker 20.10.0 或更高版本
- Docker Compose 2.0.0 或更高版本
- Git 客户端
- 至少 4GB 可用内存(编译过程较耗资源)
建议使用 Ubuntu 22.04 LTS 作为基础系统,其他 Linux 发行版可能需要额外调整依赖项。
2.2 源码获取与准备
从官方仓库克隆源码时,建议使用深度克隆以确保获取完整的提交历史:
bash复制git clone --depth=1 https://github.com/openclaw/openclaw.git
cd openclaw
提示:使用 --depth=1 参数可以显著减少克隆时间,特别适合CI/CD流水线环境
对于生产环境部署,建议检查并切换到稳定版本分支:
bash复制git tag -l | sort -V
git checkout v1.2.0 # 示例版本号
3. 编译与容器化构建
3.1 编译脚本解析
docker-setup.sh 脚本主要完成以下工作:
- 安装 Node.js 依赖(使用 pnpm 作为包管理器)
- 将 TypeScript 源码编译为 JavaScript
- 构建包含运行时环境的 Docker 镜像
脚本执行前建议检查以下内容:
- 确保 /var/run/docker.sock 可访问
- 当前用户具有 docker 组权限
- 磁盘剩余空间大于 2GB
执行编译命令:
bash复制chmod +x docker-setup.sh
./docker-setup.sh
编译完成后,可以通过以下命令验证:
bash复制docker image inspect openclaw:local --format '{{.Size}}'
正常编译后的镜像大小应在 300-500MB 之间。
3.2 编译问题排查
常见编译错误及解决方案:
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| npm ERR! 404 | 依赖包版本不匹配 | 删除 node_modules 后重试 |
| TS编译错误 | TypeScript 版本问题 | 检查 package.json 中的 typescript 版本 |
| 镜像构建失败 | Docker 内存不足 | 增加 Docker 内存限制到 4GB |
4. 容器部署与配置
4.1 docker-compose 配置解析
标准的 docker-compose.yml 应包含以下服务:
yaml复制version: '3.8'
services:
openclaw-gateway:
image: openclaw:local
container_name: openclaw-gateway
ports:
- "18789:18789"
volumes:
- ./config:/root/.openclaw
environment:
- NODE_ENV=production
restart: unless-stopped
openclaw-cli:
image: openclaw:local
container_name: openclaw-cli
volumes:
- ./config:/root/.open
