Docker VM Runtime

VM 式 Docker 安裝的共用 runtime 步驟,適用於 GCP、Hetzner 及類似的 VPS 供應商。

將必要的二進位檔寫入映像

在執行中的容器內安裝二進位檔是個陷阱。 任何在 runtime 安裝的東西在重啟後都會消失。

技能所需的所有外部二進位檔必須在映像建置時安裝。

以下範例展示三個常用二進位檔:

  • gog 用於存取 Gmail
  • goplaces 用於 Google Places
  • wacli 用於 WhatsApp

這些只是範例,不是完整清單。 你可以用相同方式安裝任意數量的二進位檔。

如果之後新增依賴其他二進位檔的技能,你需要:

  1. 更新 Dockerfile
  2. 重新建置映像
  3. 重啟容器

範例 Dockerfile

FROM node:24-bookworm

RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*

# 範例二進位檔 1:Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog

# 範例二進位檔 2:Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces

# 範例二進位檔 3:WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && 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
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build

ENV NODE_ENV=production

CMD ["node","dist/index.js"]

建置與啟動

docker compose build
docker compose up -d openclaw-gateway

如果建置在 pnpm install --frozen-lockfile 期間因 Killedexit code 137 失敗,表示 VM 記憶體不足。 請先升級機器規格再重試。

驗證二進位檔:

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

預期輸出:

/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli

驗證閘道:

docker compose logs -f openclaw-gateway

預期輸出:

[gateway] listening on ws://0.0.0.0:18789

資料存放位置

OpenClaw 在 Docker 中執行,但 Docker 不是資料的真實來源。 所有長期狀態必須在重啟、重建和重開機後存活。

元件位置持久化機制備註
閘道設定/home/node/.openclaw/主機 volume 掛載包含 openclaw.json、token
模型授權設定檔/home/node/.openclaw/主機 volume 掛載OAuth token、API 金鑰
技能設定/home/node/.openclaw/skills/主機 volume 掛載技能層級狀態
Agent workspace/home/node/.openclaw/workspace/主機 volume 掛載程式碼和 agent 產物
WhatsApp session/home/node/.openclaw/主機 volume 掛載保留 QR 登入狀態
Gmail 金鑰環/home/node/.openclaw/volume + 密碼需要 GOG_KEYRING_PASSWORD
外部二進位檔/usr/local/bin/Docker 映像必須在建置時寫入
Node runtime容器檔案系統Docker 映像每次建置映像時重建
作業系統套件容器檔案系統Docker 映像不要在 runtime 安裝
Docker 容器暫時性可重啟可安全銷毀

更新

在 VM 上更新 OpenClaw:

git pull
docker compose build
docker compose up -d