适用于 GCP、Hetzner 等 VPS 上 Docker 部署的共享运行时步骤。

核心原则

容器是临时的,所有长期状态必须挂载到宿主机。运行时安装的二进制文件会在重启后丢失,必须在镜像构建时烘焙进去。

烘焙必要二进制文件

FROM node:24-bookworm
 
RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*
 
# Gmail CLI(gogcli)
RUN curl -L https://github.com/steipete/gogcli/releases/latest/download/gogcli_linux_amd64.tar.gz \
  | tar -xzO gog > /usr/local/bin/gog; chmod +x /usr/local/bin/gog
 
# WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli-linux-amd64.tar.gz \
  | tar -xzO wacli > /usr/local/bin/wacli; chmod +x /usr/local/bin/wacli
 
WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts
RUN corepack enable && pnpm install --frozen-lockfile
COPY . .
RUN pnpm build && pnpm ui:install && pnpm ui:build
ENV NODE_ENV=production
CMD ["node","dist/index.js"]

ARM VM 需选择 arm64 资产;生产环境建议固定版本 URL。

构建与启动

docker compose build
docker compose up -d openclaw-gateway

构建时若出现 Killed 或 exit code 137,说明 VM 内存不足,需升级机型。

验证二进制文件:

docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which wacli

持久化映射

组件容器路径持久化方式
Gateway 配置/home/node/.openclaw/宿主机卷挂载
模型 auth profiles/home/node/.openclaw/agents/宿主机卷挂载
Agent workspace/home/node/.openclaw/workspace/宿主机卷挂载
WhatsApp session/home/node/.openclaw/宿主机卷挂载
外部二进制文件/usr/local/bin/Docker 镜像(构建时烘焙)
容器本身临时可安全销毁

更新流程

git pull
docker compose build
docker compose up -d

相关链接