Aller au contenu

Docker VM Runtime

Étapes d’exécution partagées pour les installations Docker basées sur une VM telles que GCP, Hetzner et des fournisseurs de VPS similaires.

Installer des binaires dans un conteneur en cours d’exécution est un piège. Tout ce qui est installé au moment de l’exécution sera perdu au redémarrage.

Tous les binaires externes requis par les compétences (skills) doivent être installés au moment de la construction de l’image.

Les exemples ci-dessous ne montrent que trois binaires courants :

  • gog pour l’accès Gmail
  • goplaces pour Google Places
  • wacli pour WhatsApp

Ce sont des exemples, pas une liste complète. Vous pouvez installer autant de binaires que nécessaire en utilisant le même modèle.

Si vous ajoutez de nouvelles compétences plus tard qui dépendent de binaires supplémentaires, vous devez :

  1. Mettre à jour le Dockerfile
  2. Reconstruire l’image
  3. Redémarrer les conteneurs

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

Fenêtre de terminal
docker compose build
docker compose up -d openclaw-gateway

Si la construction échoue avec Killed ou exit code 137 pendant pnpm install --frozen-lockfile, la VM n’a plus de mémoire. Utilisez une classe de machine plus grande avant de réessayer.

Vérifier les binaires :

Fenêtre de terminal
docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli

Sortie attendue :

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

Vérifier Gateway :

Fenêtre de terminal
docker compose logs -f openclaw-gateway

Sortie attendue :

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

OpenClaw s’exécute dans Docker, mais Docker n’est pas la source de vérité. Tout état de longue durée doit survivre aux redémarrages, reconstructions et reboots.

ComposantEmplacementMécanisme de persistanceNotes
Config Gateway/home/node/.openclaw/Montage de volume hôteInclut openclaw.json, jetons
Profils d’auth de modèle/home/node/.openclaw/Montage de volume hôteJeton OAuth, clés API
Configs de compétence/home/node/.openclaw/skills/Montage de volume hôteÉtat au niveau de la compétence
Espace de travail de l’agent/home/node/.openclaw/workspace/Montage de volume hôteCode et artefacts d’agent
Session WhatsApp/home/node/.openclaw/Montage de volume hôtePréserve la connexion QR
Trousseau de clés Gmail/home/node/.openclaw/Volume hôte + mot de passeNécessite GOG_KEYRING_PASSWORD
Binaires externes/usr/local/bin/Image DockerDoit être inclus au moment de la construction
Runtime NodeSystème de fichiers conteneurImage DockerReconstruit à chaque construction d’image
Paquets OSSystème de fichiers conteneurImage DockerNe pas installer à l’exécution
Conteneur DockerÉphémèreRedémarrableSûr à détruire

Pour mettre à jour OpenClaw sur la VM :

Fenêtre de terminal
git pull
docker compose build
docker compose up -d