diff --git a/README.md b/README.md index 1e05e59..8bcc677 100644 --- a/README.md +++ b/README.md @@ -8,25 +8,35 @@ Custom OpenClaw Gateway build for ARM64 with Google Workspace tools. - `docker/` - Custom image build (ARM64 + gog + gcloud) - `AGENTS.md` - Full deployment guide -## Quick Start +## Quick Start (Docker Compose) ```bash -# 1. Build the custom image -cd docker && ./build-arm64.sh +# 1. Deploy (builds fresh image automatically) +docker-compose up --build -d -# 2. Push to your registry +# 2. Copy in your Google client secret +docker cp /path/to/client_secret.json openclaw-gateway:/home/node/.openclaw/google-client-secret.json + +# 3. Setup gog (Google Workspace) +docker exec -it openclaw-gateway setup-gog.sh +docker exec -it openclaw-gateway gog auth add you@gmail.com --services gmail,calendar,drive + +# Rebuild and redeploy after code changes: +docker-compose up --build -d +``` + +## Docker Swarm (stack.yml) + +If you prefer Swarm orchestration (replicas, rolling updates, placement constraints): + +```bash +# Build and push first +cd docker && ./build-arm64.sh docker tag openclaw:custom-arm64 registry.lan/openclaw:latest docker push registry.lan/openclaw:latest -# 3. Deploy +# Then deploy docker stack deploy -c stack.yml openclaw - -# 4. Copy in your Google client secret -docker cp /path/to/client_secret.json $(docker ps -q -f name=openclaw-gateway):/home/node/.openclaw/google-client-secret.json - -# 5. Setup gog (Google Workspace) -docker exec -it $(docker ps -q -f name=openclaw-gateway) setup-gog.sh -docker exec -it $(docker ps -q -f name=openclaw-gateway) gog auth add you@gmail.com --services gmail,calendar,drive ``` ## Custom Image Includes diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..413abc2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,53 @@ +version: "3.8" + +services: + openclaw-gateway: + build: + context: ./docker + dockerfile: Dockerfile + platforms: + - linux/arm64 + image: openclaw:custom-arm64 + container_name: openclaw-gateway + restart: unless-stopped + environment: + HOME: /home/node + TERM: xterm-256color + OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN} + MOONSHOT_API_KEY: ${MOONSHOT_API_KEY} + GOG_ACCOUNT: ${GOG_ACCOUNT:-} + volumes: + - openclaw-config:/home/node/.openclaw + - openclaw-workspace:/home/node/.openclaw/workspace + - gog-data:/home/node/.openclaw/gog + ports: + - "${OPENCLAW_GATEWAY_PORT:-18789}:18789" + - "${OPENCLAW_BRIDGE_PORT:-18790}:18790" + init: true + networks: + - dokploy-network + command: + [ + "node", + "dist/index.js", + "gateway", + "--bind", + "${OPENCLAW_GATEWAY_BIND:-lan}", + "--port", + "18789", + ] + healthcheck: + test: ["CMD", "healthcheck.sh"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 30s + +volumes: + openclaw-config: + openclaw-workspace: + gog-data: + +networks: + dokploy-network: + external: true