使用 Docker-compose 部署 OpenClaw 客户端

前言

之前给大家介绍了使用第三方镜像快速在 docker中部署 openclaw 客户端,详情可参见《如何使用 Docker 快速部署 OpenClaw 客户端

今天我们换种方式,采用Docker-compose的形式来进行部署,虽然相对繁琐一些,但后期维护和迁移更加省心

这里以 Node 22 镜像为基础,复刻了官方的一键安装体验,同时预装微信和飞书插件。

具体部署操作如下:

部署流程

1. 创建自定义网络

1
docker network create c_bridge

创建自定义网络,方便后期多容器交互。

2. 创建工作目录和数据映射目录

1
2
3
4
5
6
#创建工作目录
mkdir openclaw-docker
#创建持久化数据映射目录
mkdir -p /root/openclaw
#进入工作目录
cd openclaw-docker

3. 在工作目录下创建 Dockerfile

1
vim Dockerfile

并写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
FROM node:22-alpine

# 替换 Alpine 软件源加速下载
RUN sed -i 's|https://dl-cdn.alpinelinux.org|https://mirrors.aliyun.com|g' /etc/apk/repositories

# 安装git
RUN apk add --no-cache git

# 安装python3
RUN apk add --no-cache python3 py3-pip

# 配置npm国内源加速下载
RUN npm config set registry https://registry.npmmirror.com/

# 安装全局 CLI
RUN npm install -g openclaw@latest --unsafe-perm


# 跳过交互式引导
ENV OPENCLAW_SKIP_ONBOARD=true

# 声明两个默认端口
EXPOSE 18789 3000 # 3000 是 OpenClaw 内部 Web UI 端口,映射到宿主机 3012

CMD ["openclaw", "gateway", "run", "--allow-unconfigured"]

4. 在工作目录下创建 docker-compose.yml

1
vim docker-compose.yml

并写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: '3.8'

services:
c_openclaw:
build: .
container_name: c_openclaw
hostname: c_openclaw # 设置容器主机名
ports:
- "18789:18789" # 网关通信端口
- "3012:3000" # Web 管理界面:内部3000映射到外部3012
volumes:
- /root/openclaw:/root/.openclaw
networks:
- c_bridge
restart: always # 设置自动重启策略

networks:
c_bridge:
external: true

5. 构建并启动

1
docker compose up -d --build
  • -d:后台运行
  • --build:每次启动前重新构建镜像(确保使用 Node 22)

注意:Dockerfile 和 docker-compose.yml 必须放在同一个目录下,否则 docker compose 命令无法找到构建上下文,如下:

1
2
3
/你的路径/openclaw-docker/  # 项目根目录
├── Dockerfile
├── docker-compose.yml

如果提示 docker compose 命令不存在,则需要执行以下指令安装compose插件:

1
2
sudo apt-get update
sudo apt-get install docker-compose-plugin

6. 进入容器创建配置

  • 查看日志

    1
    docker compose logs -f
  • 进入容器

    1
    docker compose exec -it c_openclaw sh
  • 在容器内执行配置

    1
    openclaw onboard

此时终端会显示配置引导,到这一步相必大家应该知道怎么做了吧

7. 安装插件(可选)

1
2
3
4
5
# 安装微信插件
npx -y @tencent-weixin/openclaw-weixin-cli@latest install

# 安装飞书插件
npx -y @larksuite/openclaw-lark install

微信二维码,用手机扫码登录即可。飞书同理,执行 npx @larksuite/openclaw-lark doctor --fix 进行配置,注意我们只需要进行配置而非安装,所以这里需要去掉-y。

8. 验证访问

  • 管理后台:浏览器打开 http://你的服务器IP:3012
  • 网关状态:检查容器内 openclaw gateway status

配置国内 Docker 镜像加速器

这是解决 Docker 下载慢最有效的方法。通过修改 Docker 的 daemon.json 配置文件,可以显著提升镜像拉取速度。

操作步骤

1. 编辑配置文件

适用于 Linux/macOS 终端或 Windows Docker Desktop 的 Docker Engine 设置:

1
2
3
4
5
6
7
8
9
10
# 创建或修改配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
EOF

2. 重启 Docker 服务

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

3. 验证配置

运行以下命令,查看输出中是否包含你配置的镜像加速器地址:

1
docker info

在输出信息中查找 Registry Mirrors 字段,确认其中包含你配置的镜像加速器地址。

注意事项

  • 此配置只影响后续的镜像拉取操作,不会影响已下载的镜像或正在运行的容器
  • 重启 Docker 服务后,运行中的容器可能会短暂停止,但可立即重新启动
  • 如果使用 Windows 或 macOS 的 Docker Desktop,可以在设置界面直接配置镜像加速器

常见问题

  1. 容器启动失败,一直处于重启中
    通常是Dockerfile 或者docker-compose.yml文件配置有问题造成的,检查一下,修改完后执行以下命令重新构建:
    1
    2
    3
    4
    # 停止容器和服务
    docker compose down
    # 重新构建
    docker compose up -d --build

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%