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:
gogdo dostępu do Gmailgoplacesdo Google Placeswaclido 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:
- Zaktualizować Dockerfile
- Przebudować obraz
- 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.
| Komponent | Lokalizacja | Mechanizm trwałości | Uwagi |
|---|---|---|---|
| Konfiguracja bramy | /home/node/.openclaw/ | Montowanie wolumenu | Zawiera openclaw.json, tokeny |
| Profile auth modeli | /home/node/.openclaw/ | Montowanie wolumenu | Tokeny OAuth, klucze API |
| Konfiguracje umiejętności | /home/node/.openclaw/skills/ | Montowanie wolumenu | Stan na poziomie umiejętności |
| Workspace agenta | /home/node/.openclaw/workspace/ | Montowanie wolumenu | Kod i artefakty agenta |
| Sesja WhatsApp | /home/node/.openclaw/ | Montowanie wolumenu | Zachowuje logowanie QR |
| Brelok Gmail | /home/node/.openclaw/ | Wolumen + hasło | Wymaga GOG_KEYRING_PASSWORD |
| Zewnętrzne pliki | /usr/local/bin/ | Obraz Docker | Muszą być wbudowane przy budowaniu |
| Runtime Node | System plików kontenera | Obraz Docker | Przebudowywany przy każdym buildzie |
| Pakiety systemowe | System plików kontenera | Obraz Docker | Nie instaluj w runtime |
| Kontener Docker | Efemeryczny | Restartowalny | Bezpieczny do usunięcia |
Aktualizacje
Aby zaktualizować OpenClaw na maszynie wirtualnej:
git pull
docker compose build
docker compose up -d