Docker VM Runtime
Etapes d’execution partagees pour les installations Docker sur VM, comme GCP, Hetzner et autres fournisseurs VPS similaires.
Integrer les binaires requis dans l’image
Installer des binaires dans un conteneur en cours d’execution est un piege. Tout ce qui est installe a l’execution sera perdu au redemarrage.
Tous les binaires externes requis par les competences doivent etre installes au moment de la construction de l’image.
Les exemples ci-dessous montrent trois binaires courants uniquement :
gogpour l’acces Gmailgoplacespour Google Placeswaclipour WhatsApp
Ce sont des exemples, pas une liste exhaustive. Vous pouvez installer autant de binaires que necessaire en suivant le meme schema.
Si vous ajoutez de nouvelles competences par la suite qui dependent de binaires supplementaires, vous devez :
- Mettre a jour le Dockerfile
- Reconstruire l’image
- Redemarrer les conteneurs
Exemple de Dockerfile
FROM node:24-bookworm
RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*
# Exemple de binaire 1 : CLI Gmail
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
# Exemple de binaire 2 : CLI Google Places
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
# Exemple de binaire 3 : CLI WhatsApp
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
# Ajoutez d'autres binaires ci-dessous en suivant le meme schema
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"]
Construction et lancement
docker compose build
docker compose up -d openclaw-gateway
Si la construction echoue avec Killed ou exit code 137 pendant pnpm install --frozen-lockfile, la VM manque de memoire.
Utilisez une classe de machine plus grande avant de reessayer.
Verifiez les binaires :
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
Verifiez la passerelle :
docker compose logs -f openclaw-gateway
Sortie attendue :
[gateway] listening on ws://0.0.0.0:18789
Ce qui persiste et ou
OpenClaw tourne dans Docker, mais Docker n’est pas la reference. Tout etat longue duree doit survivre aux redemarrages, reconstructions et reboots.
| Composant | Emplacement | Mecanisme de persistance | Notes |
|---|---|---|---|
| Config passerelle | /home/node/.openclaw/ | Montage volume hote | Inclut openclaw.json, tokens |
| Profils auth modele | /home/node/.openclaw/ | Montage volume hote | Tokens OAuth, cles API |
| Configs competences | /home/node/.openclaw/skills/ | Montage volume hote | Etat au niveau competence |
| Espace de travail | /home/node/.openclaw/workspace/ | Montage volume hote | Code et artefacts de l’agent |
| Session WhatsApp | /home/node/.openclaw/ | Montage volume hote | Preserve la connexion QR |
| Trousseau Gmail | /home/node/.openclaw/ | Volume hote + mot de passe | Necessite GOG_KEYRING_PASSWORD |
| Binaires externes | /usr/local/bin/ | Image Docker | Doivent etre integres au build |
| Runtime Node | Systeme de fichiers conteneur | Image Docker | Reconstruit a chaque build |
| Paquets OS | Systeme de fichiers conteneur | Image Docker | Ne pas installer a l’execution |
| Conteneur Docker | Ephemere | Redemarrable | Peut etre detruit sans risque |
Mises a jour
Pour mettre a jour OpenClaw sur la VM :
git pull
docker compose build
docker compose up -d