Docker VM Runtime

Wspólne kroki runtime dla instalacji Docker opartych na maszynach wirtualnych, takich jak GCP, Hetzner i podobni dostawcy VPS.

Wbuduj wymagane pliki binarne w obraz

Instalowanie plików binarnych w działającym kontenerze to pułapka. Wszystko zainstalowane w runtime zostanie utracone po restarcie.

Wszystkie zewnętrzne pliki binarne wymagane przez umiejętności muszą być zainstalowane na etapie budowania obrazu.

Poniższe przykłady pokazują tylko trzy popularne pliki binarne:

  • gog do dostępu do Gmail
  • goplaces do Google Places
  • wacli do WhatsApp

To są przykłady, nie kompletna lista. Możesz zainstalować tyle plików binarnych, ile potrzebujesz, używając tego samego wzorca.

Jeśli później dodasz nowe umiejętności zależne od dodatkowych plików binarnych, musisz:

  1. Zaktualizować Dockerfile
  2. Przebudować obraz
  3. Zrestartować kontenery

Przykładowy Dockerfile

FROM node:24-bookworm

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

# Example binary 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

# Example binary 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

# Example binary 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

# Add more binaries below using the same pattern

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"]

Budowanie i uruchamianie

docker compose build
docker compose up -d openclaw-gateway

Jeśli budowanie kończy się błędem Killed lub exit code 137 podczas pnpm install --frozen-lockfile, maszyna wirtualna nie ma wystarczającej pamięci. Użyj większego typu maszyny przed ponowną próbą.

Sprawdź pliki binarne:

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

Oczekiwany wynik:

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

Sprawdź bramę:

docker compose logs -f openclaw-gateway

Oczekiwany wynik:

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

Co gdzie jest przechowywane

OpenClaw działa w Dockerze, ale Docker nie jest źródłem prawdy. Cały długotrwały stan musi przetrwać restarty, przebudowy i reboot.

KomponentLokalizacjaMechanizm trwałościUwagi
Konfiguracja bramy/home/node/.openclaw/Montowanie wolumenuZawiera openclaw.json, tokeny
Profile auth modeli/home/node/.openclaw/Montowanie wolumenuTokeny OAuth, klucze API
Konfiguracje umiejętności/home/node/.openclaw/skills/Montowanie wolumenuStan na poziomie umiejętności
Workspace agenta/home/node/.openclaw/workspace/Montowanie wolumenuKod i artefakty agenta
Sesja WhatsApp/home/node/.openclaw/Montowanie wolumenuZachowuje logowanie QR
Brelok Gmail/home/node/.openclaw/Wolumen + hasłoWymaga GOG_KEYRING_PASSWORD
Zewnętrzne pliki/usr/local/bin/Obraz DockerMuszą być wbudowane przy budowaniu
Runtime NodeSystem plików konteneraObraz DockerPrzebudowywany przy każdym buildzie
Pakiety systemoweSystem plików konteneraObraz DockerNie instaluj w runtime
Kontener DockerEfemerycznyRestartowalnyBezpieczny do usunięcia

Aktualizacje

Aby zaktualizować OpenClaw na maszynie wirtualnej:

git pull
docker compose build
docker compose up -d