ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Windows平台Docker部署OpenClaw全流程指南

Windows平台Docker部署OpenClaw全流程指南

1. Windows平台Docker部署OpenClaw全流程指南

作为一名长期在Windows环境下进行容器化部署的开发者,我最近成功在Windows 11专业版上完成了OpenClaw的Docker化部署。这个方案最大的优势在于完全支持移植到其他Windows设备,且经过我多次测试验证稳定可用。下面将详细分享整个部署过程的关键步骤和注意事项。

1.1 环境准备与前置条件

在开始部署前,请确保你的Windows系统满足以下要求:

  • Windows 10/11专业版或企业版(家庭版需要额外配置)
  • 已启用Hyper-V和容器功能(可通过"启用或关闭Windows功能"勾选)
  • Docker Desktop 4.25+版本(建议使用WSL2后端)
  • 至少8GB内存(建议16GB以获得更好体验)
  • 50GB可用磁盘空间

重要提示:如果你的设备是Windows家庭版,需要先升级到专业版或手动安装WSL2内核,否则Docker的某些功能可能无法正常工作。

安装Docker Desktop时,务必在设置中勾选"使用WSL2引擎"选项。安装完成后,建议执行以下基础检查:

# 验证Docker安装 docker --version docker-compose --version # 验证WSL状态 wsl --list --verbose

1.2 OpenClaw镜像获取与配置

OpenClaw官方提供了两种部署方式:使用预构建镜像或从源码构建。对于大多数Windows用户,我推荐直接使用预构建镜像以简化流程。

方法一:使用预构建镜像(推荐)
# 拉取官方镜像 docker pull ghcr.io/openclaw/openclaw:latest # 设置环境变量 $env:OPENCLAW_IMAGE = "ghcr.io/openclaw/openclaw:latest"
方法二:从源码构建(适合定制需求)
# 克隆仓库 git clone https://github.com/openclaw/openclaw.git cd openclaw # 构建镜像 docker build -t openclaw:local -f Dockerfile .

构建过程中常见的问题是内存不足导致构建失败(退出码137)。解决方法是在Docker Desktop设置中增加内存分配(建议至少6GB),或者使用以下命令临时调整:

# 调整WSL内存限制(需要管理员权限) wsl --shutdown notepad "$env:USERPROFILE\.wslconfig"

在打开的.wslconfig文件中添加:

[wsl2] memory=8GB swap=4GB

2. Docker Compose配置与部署

2.1 基础服务编排

在项目根目录创建docker-compose.yml文件,内容如下:

version: '3.8' services: openclaw-gateway: image: ${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest} container_name: openclaw-gateway restart: unless-stopped ports: - "18789:18789" volumes: - ${OPENCLAW_CONFIG_DIR:-./config}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR:-./workspace}:/home/node/.openclaw/workspace - ${OPENCLAW_AUTH_PROFILE_SECRET_DIR:-./auth}:/home/node/.config/openclaw environment: - NODE_ENV=production - OPENCLAW_DISABLE_BONJOUR=1 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:18789/healthz"] interval: 30s timeout: 10s retries: 3 openclaw-cli: image: ${OPENCLAW_IMAGE:-ghcr.io/openclaw/openclaw:latest} depends_on: - openclaw-gateway network_mode: "service:openclaw-gateway" volumes: - ${OPENCLAW_CONFIG_DIR:-./config}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR:-./workspace}:/home/node/.openclaw/workspace entrypoint: ["node", "dist/index.js"]

2.2 Windows路径特殊处理

由于Windows和Linux的路径格式差异,需要特别注意卷挂载的路径处理。建议在PowerShell中设置环境变量时使用绝对路径:

# 设置配置目录(使用Windows路径格式) $env:OPENCLAW_CONFIG_DIR = "D:\openclaw\config" $env:OPENCLAW_WORKSPACE_DIR = "D:\openclaw\workspace" $env:OPENCLAW_AUTH_PROFILE_SECRET_DIR = "D:\openclaw\auth" # 创建目录(如果不存在) New-Item -ItemType Directory -Force -Path $env:OPENCLAW_CONFIG_DIR New-Item -ItemType Directory -Force -Path $env:OPENCLAW_WORKSPACE_DIR New-Item -ItemType Directory -Force -Path $env:OPENCLAW_AUTH_PROFILE_SECRET_DIR

常见问题:如果遇到权限错误,可能是因为Windows和Linux容器之间的用户权限不匹配。解决方法是在Docker Desktop设置中启用"共享驱动器",或者手动设置目录权限:

# 授予Everyone完全控制权限(仅限开发环境) icacls "D:\openclaw" /grant "Everyone:(OI)(CI)F" /T

3. 初始化配置与启动

3.1 首次运行设置

执行以下命令启动服务并完成初始配置:

# 启动服务 docker-compose up -d # 运行初始化向导 docker-compose run --rm openclaw-cli onboard --mode local # 生成控制面板访问令牌 docker-compose run --rm openclaw-cli config set --batch-json '[{"path":"gateway.mode","value":"local"},{"path":"gateway.bind","value":"lan"}]'

初始化过程中会提示输入API密钥等必要信息。完成后,可以通过以下命令获取控制面板URL:

docker-compose run --rm openclaw-cli dashboard --no-open

3.2 验证服务状态

检查服务是否正常运行:

# 检查容器状态 docker ps # 检查健康状态 curl http://localhost:18789/healthz # 查看日志 docker logs -f openclaw-gateway

正常启动后,日志中应该能看到类似以下信息:

[gateway] Server running at http://0.0.0.0:18789 [gateway] Gateway token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

4. 高级配置与功能扩展

4.1 消息渠道集成

OpenClaw支持多种消息渠道集成,以下是配置Telegram机器人的示例:

# 添加Telegram渠道 docker-compose run --rm openclaw-cli channels add ` --channel telegram ` --token "<你的Telegram机器人Token>"

配置完成后,需要在Telegram机器人设置中配置Webhook地址为:

http://<你的公网IP或域名>:18789/api/channels/telegram/webhook

4.2 沙箱环境配置

为了安全执行不受信任的代码,可以启用Docker沙箱:

# 创建沙箱配置文件 $sandboxConfig = @' { "agents": { "defaults": { "sandbox": { "mode": "non-main", "scope": "agent", "docker": { "image": "openclaw-sandbox:latest" } } } } } '@ $sandboxConfig | Out-File -FilePath "$env:OPENCLAW_CONFIG_DIR/openclaw.json" -Encoding utf8 # 构建沙箱镜像 docker build -t openclaw-sandbox:latest -f Dockerfile.sandbox .

4.3 持久化与备份策略

为确保数据安全,建议配置定期备份:

# 创建备份脚本(backup.ps1) @" $date = Get-Date -Format "yyyyMMdd" Compress-Archive -Path "$env:OPENCLAW_CONFIG_DIR", "$env:OPENCLAW_WORKSPACE_DIR" ` -DestinationPath "D:\backup\openclaw_$date.zip" -Force "@ | Out-File -FilePath "D:\scripts\backup.ps1" -Encoding utf8 # 设置Windows计划任务(每天凌晨3点备份) $action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File D:\scripts\backup.ps1" $trigger = New-ScheduledTaskTrigger -Daily -At 3am Register-ScheduledTask -TaskName "OpenClaw Backup" -Action $action -Trigger $trigger -RunLevel Highest

5. 常见问题排查

5.1 端口冲突问题

如果18789端口被占用,可以修改docker-compose.yml中的端口映射:

ports: - "18790:18789" # 将外部端口改为18790

然后更新网关绑定配置:

docker-compose run --rm openclaw-cli config set --batch-json '[{"path":"gateway.bind","value":"lan"},{"path":"gateway.controlUi.allowedOrigins","value":["http://localhost:18790","http://127.0.0.1:18790"]}]'

5.2 容器网络问题

Windows特有的网络问题可能导致容器无法访问外部网络。解决方法:

  1. 重置Docker网络:
docker network prune
  1. 检查防火墙规则:
New-NetFirewallRule -DisplayName "OpenClaw Ports" -Direction Inbound -LocalPort 18789 -Protocol TCP -Action Allow

5.3 性能优化建议

对于资源受限的环境,可以调整容器资源限制:

# 在docker-compose.yml中添加资源限制 deploy: resources: limits: cpus: '2' memory: 4G reservations: cpus: '0.5' memory: 1G

6. 移植到其他Windows设备

将部署好的OpenClaw环境移植到其他Windows设备非常简单:

  1. 备份配置文件目录(默认位于./config)
  2. 备份工作区目录(默认位于./workspace)
  3. 在新设备上安装Docker Desktop
  4. 复制docker-compose.yml文件
  5. 恢复备份的目录到相同路径
  6. 启动服务:
docker-compose up -d

这种移植方式保留了所有配置、插件和会话历史,真正实现了"一次部署,多处运行"。

在实际移植过程中,我建议创建一个部署脚本来自动化这个过程:

# deploy.ps1 param( [string]$configBackup, [string]$workspaceBackup ) # 恢复备份 Expand-Archive -Path $configBackup -DestinationPath "./config" -Force Expand-Archive -Path $workspaceBackup -DestinationPath "./workspace" -Force # 启动服务 docker-compose up -d # 验证状态 Start-Sleep -Seconds 10 curl http://localhost:18789/healthz

使用方式:

.\deploy.ps1 -configBackup "D:\backup\config.zip" -workspaceBackup "D:\backup\workspace.zip"
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进