AI创想

标题: 用docker来安装openclaw [打印本页]

作者: 创想小编    时间: 10 小时前
标题: 用docker来安装openclaw
作者:CSDN博客
用docker来安装openclaw

前言

虽然最近openclaw火的不行,但是他依然是一个高速发展和成长中的系统或者说软件,还不是很成熟:看看他开源代码,一天一个release也常见。
所以,遇到各种bug,各种与插件的兼容性问题,也不奇怪。
如果安装在裸机中,回退升级都是很麻烦的事情,所以,我想把他安装在docker中,方便升级和回退。
安装

我习惯用2中方式来在docker中安装openclaw:
第一种方式更灵活,适合测试和实验新版本,开发新插件。
第二种方法可以封装系统,适合用来分享镜像
现在来体验一下这俩种方式吧:
在基础镜像内手工安装

根据官方文档推荐使用node 22+,所以选择使用node:22-trixie作为基础镜像:
启动脚本:
  1. docker run -it --net=host -v ./openclaw:/root/.openclaw --name openclaw node:22-trixie bash
复制代码
简单解释:
  1. --net=host   #直接使用主机网络,简化测试
  2. -v ./openclaw:/root/.openclaw   #这个是openclaw的数据目录,持久化下来
  3. --name openclaw   #为这个实例起个名字bash#启动bash
复制代码
安装
  1. npminstall -g openclaw@latest
复制代码
安装成功:
(, 下载次数: 0)


初始化配置

第一次启动可以选择使用:openclaw onboard
这个命令会使用引导方式去配置所有的信息并最后启动openclaw gateway,我们使用这种方式:
(, 下载次数: 0)


以上图,红色的就是每一步,灰色的就是我们选择或者填入的信息,其他特别要注意以下这步:
(, 下载次数: 0)


飞书的这个插件已经被集成在openclaw中了,但是如果这里你再选择安装,就会出现2个版本,会冲突。
当你看到这个页面的适合,就已经完成了配置,且已经启动了:
(, 下载次数: 0)


但是这时候其实是无法访问的:
我们安装选择的快速配置,没有配置网络,所以他目前监听本地网络,且禁止非https访问,所以实际无法访问。(如果是部署一个生产用的,准备放在一个caddy或者nginx等反向代理服务器后面,倒是可以的。)
使用ctrl+c终止程序运行,然后直接使用vim编辑:
  1. vim ~/.openclaw/openclaw.json
复制代码
找到gateway部分,修改mode、bind、controlUi部分,最终如下:
  1. "gateway":{"port":18789,"mode":"local","bind":"lan","controlUi":{"enabled":true,"allowInsecureAuth":true},"auth":{"mode":"token","token":"1876cbd181533358223674dab4841f60c252f62c206a53f9"},"tailscale":{"mode":"off","resetOnExit":false}}
复制代码
另:如果你还没用大模型API,可以先看看这篇:
来了!老黄NVIDIA免费为clawdbot续命
保存后启动:
  1. openclaw gateway
复制代码
当你看到这个页面的时候,就可以啦:
(, 下载次数: 0)


访问地址:
http://你的IP:18789/?token=你的token
测试一下:

你可以看到这个页面,先给他起个名字:
(, 下载次数: 0)


保存镜像

在主机下执行查询,可以看到运行的容器,直接使用commit来保存成镜像:
  1. docker ps
  2. docker commit f0bd197aec12 openclaw:0.0.1
复制代码
(, 下载次数: 0)


这样使用docker来安装openclaw就完成啦,就保存了一个指定的版本,也不影响我尝试安装其他的版本。
使用Dockerfile构建openclaw镜像

现在来试试打包发布的方式,来安装openclaw:
openclaw官方是支持使用docker来安装的,所以他的源码中有docker的所有配置,且官方文档也有相关内容。
所以我准备以他为基础,简化一下,将一些模板化的配置改成我需要的写死的信息,可以简化很多.
先下载代码:
  1. git clone --depth 1 https://github.com/openclaw/openclaw
复制代码
打开dockerfile,主要修改了三个地方:
(, 下载次数: 0)


步骤3不是必须的,而是因为我习惯了用了很久的一个第三方飞书插件,而系统俩个飞书插件是会冲突的。
编译:
  1. docker build -t openclaw:local -f Dockerfile .
复制代码
构建完成后使用docker compose 编排:
  1. services:openclaw:image: openclaw:local
  2.     container_name: openclaw
  3.     restart: unless-stopped
  4.     env_file:- ./env.file
  5.     environment:TZ: Asia/Shanghai
  6.       HOME: /root
  7.       TERM: xterm-256color
  8.     volumes:- /home/openclaw:/root
  9.       - ./logs:/tmp/openclaw
  10.     command:["node","dist/index.js","gateway","--port","18789",]
复制代码
简单解释:
这样就会使用dockefile里面的默认命令,使用无配置文件启动
初始化配置

可以启动容器后,接入容器后来配置,也可以直接运行命令配置:
  1. # 进入运行的容器配置:dockerexec -it openclaw bashnode /app/disk/index.js onboard
  2. # 直接启动命令配置docker compose run --rm openclaw onboard
复制代码
启动配置后的步骤,和第一种方式一样的,就不赘述了。
注意:
使用官方dockerfile构建的镜像,不像使用npm全局安装的,命令只能使用node去运行,例如:
安装飞书插件的俩这差别:
  1. #使用npm全局安装的时候
  2. openclaw plugins install @m1heng-clawd/feishu
  3. # 使用官方dockerfile构建的镜像node /app/dist/index.js plugins install @m1heng-clawd/feishu
复制代码
小结

openclaw真的给ai带来了翻天覆地的变化,给一个只会嘴活的ai,添加了一双手!
但是目前也是在告诉发展期间,版本更迭太快,使用docker的方式能更好的隔离环境,更快的更新或者回退版本。
欢迎关注:
https://mp.weixin.qq.com/s/7ExVbQHcd8v9CxA8nL_XWg?token=210876465&lang=zh_CN

原文地址:https://blog.csdn.net/casablanca1983/article/details/157813633




欢迎光临 AI创想 (https://llms-ai.com/) Powered by Discuz! X3.4