Aller au contenu

Docker VM runtime

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

Installer des binaires à l’intérieur d’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 doivent être installés au moment de la construction de l’image.

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

  • gog (depuis gogcli) 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 (gogcli — installs as `gog`)
# Copy the current Linux asset URL from https://github.com/steipete/gogcli/releases
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
# Example binary 2: Google Places CLI
# Copy the current Linux asset URL from https://github.com/steipete/goplaces/releases
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_linux_amd64.tar.gz \
| tar -xzO goplaces > /usr/local/bin/goplaces; \
chmod +x /usr/local/bin/goplaces
# Example binary 3: WhatsApp CLI
# Copy the current Linux asset URL from https://github.com/steipete/wacli/releases
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
# 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 est à court 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 la passerelle :

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, .env
Profils d’auth de modèle/home/node/.openclaw/agents/Montage de volume hôteagents/<agentId>/agent/auth-profiles.json (OAuth, clés API)
Clé de profil d’authentification/home/node/.config/openclaw/Montage de volume hôteClé de chiffrement locale pour le matériel du jeton de profil d’authentification OAuth
Configurations de compétences/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 de l’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
Packages de plugins/home/node/.openclaw/npm, /home/node/.openclaw/gitMontage de volume hôteRacines des packages de plugins téléchargeables
Binaires externes/usr/local/bin/Docker imageDoit être inclus lors de la compilation
Runtime NodeSystème de fichiers conteneurImage DockerReconstruit à chaque construction d’image
Packages du système d’exploitationSystème de fichiers du conteneurImage DockerNe pas installer lors de 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