为什么选择Docker部署
对于需要长期稳定运行 OpenClaw 的用户来说,Docker 部署是比直接 npm 安装更好的选择。它带来几个明显优势:环境隔离避免依赖冲突、一键启停方便运维、容器重启自动恢复服务、版本升级只需更换镜像标签。
本文将带你从零完成 Docker Compose 部署,适用于个人服务器、家庭 NAS 或云主机。
前置准备
确保你的机器已安装以下工具:
- Docker Engine 24+
- Docker Compose v2+(现代版本已内置于 Docker CLI)
验证安装:
docker --version
docker compose version
如果还没有安装 Docker,请参考 Docker 官方文档 完成安装。
编写docker-compose.yml
创建一个项目目录并编写 Compose 配置文件:
mkdir -p ~/openclaw-docker && cd ~/openclaw-docker
创建 docker-compose.yml 文件,内容如下:
version: "3.8"
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "18789:18789"
volumes:
- ./config:/root/.config/openclaw
- ./data:/root/.openclaw
environment:
- NODE_ENV=production
- TZ=Asia/Shanghai
env_file:
- .env
这个配置做了以下几件事:
- 使用官方镜像
openclaw/openclaw:latest - 将 Gateway 端口 18789 映射到宿主机
- 挂载配置目录和数据目录实现持久化
- 设置时区为上海(可根据需要修改)
- 从
.env文件读取敏感环境变量
配置环境变量
创建 .env 文件存放 API 密钥等敏感信息:
# .env
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxx
OPENAI_API_KEY=sk-xxxxxxxxxxxxx
只需要填写你实际使用的提供商对应的密钥即可。注意 .env 文件包含敏感信息,请确保它不会被提交到版本控制系统。
创建配置文件
在 config 目录中创建 OpenClaw 的核心配置文件:
mkdir -p config
创建 config/openclaw.json5 文件:
{
// AI 模型提供商配置
providers: {
anthropic: {
enabled: true,
defaultModel: "claude-sonnet-4-20250514"
}
},
// Gateway 配置
gateway: {
port: 18789,
host: "0.0.0.0" // Docker 容器内需要监听所有接口
},
// 频道配置(按需启用)
channels: {}
}
注意 host 必须设为 0.0.0.0,否则容器外部无法访问 Gateway。
启动容器
一切就绪后,启动服务:
docker compose up -d
查看容器运行状态:
docker compose ps
你应该能看到 openclaw 容器处于 running 状态。
查看日志
实时查看运行日志,这在排查问题时非常有用:
docker compose logs -f openclaw
只查看最近 100 行日志:
docker compose logs --tail 100 openclaw
如果启动过程中出现 API 连接错误,通常是密钥配置有误,检查 .env 文件中的密钥是否正确。
日常运维操作
停止服务:
docker compose down
重启服务:
docker compose restart
升级到最新版本:
docker compose pull
docker compose up -d
这会拉取最新镜像并重建容器,配置和数据因为挂载了卷所以不会丢失。
进入容器调试:
docker exec -it openclaw sh
在容器内你可以运行 openclaw doctor 进行诊断。
数据备份
由于配置和数据都挂载在宿主机的 ./config 和 ./data 目录中,备份非常简单:
tar -czf openclaw-backup-$(date +%Y%m%d).tar.gz config data .env
建议定期备份,尤其是在升级之前。
反向代理配置(可选)
如果你想通过域名访问 OpenClaw,可以在前面加一层 Nginx 反向代理。在 docker-compose.yml 中添加 Nginx 服务,或者在宿主机的 Nginx 配置中添加:
server {
listen 443 ssl;
server_name openclaw.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
WebSocket 的 Upgrade 头设置很重要,OpenClaw 的实时通信依赖它。
总结
Docker 部署让 OpenClaw 的运维变得非常省心。配置一次之后,日常只需要关注日志和定期升级即可。如果遇到问题,可以参考 OpenClaw官方文档 或到 OpenClaw GitHub仓库 提交 Issue。更多功能介绍请访问 OpenClaw。