Initial import of verae-ops from zapier monorepo

This commit is contained in:
George Lambert 2026-09-11 16:19:16 -04:00
commit 3d95b1d05b
13 changed files with 802 additions and 0 deletions

54
02-docker.md Normal file
View file

@ -0,0 +1,54 @@
# 2. Docker Compose
`docker-compose.yml` in this repo starts:
- NATS JetStream **3-node cluster** (`nats1``nats3`) on an internal network
- **zappier-edge** `:3000`
- **middleware** `:3100` with `NATS_URL=nats://nats1:4222` and `MOCK_VERAE=true` by default
- **archive-worm** ×3 and **tree-node** ×3 (fleet floors) as long-running Node workers
- **aggregator** + **job-poller** stand-ins via middleware workers when `NATS_ENABLED=true`
NATS ports are **not** published to the host by default (private `verae` network). HTTPS edges are.
## Prereqs
Docker Engine 24+ and Compose v2. Clone **this repo** plus the application repos as siblings, **or** set `MONOREPO` to a checkout of `master-zapier-plan-draft`.
```bash
export MONOREPO=/path/to/master-zapier-plan-draft # contains packages/
docker compose up --build
curl -fsS http://127.0.0.1:3000/health
curl -fsS http://127.0.0.1:3100/health
```
Without `MONOREPO`, Compose expects `../zappier`, `../verae-zapier-middleware`, … (independent clones next to `verae-ops`).
## Link Zapier (cloud) to the lab
1. Publish zappier-edge on a TLS hostname (Caddy/nginx in front of `:3000`).
2. In the Zapier app env: `MIDDLEWARE_BASE_URL=https://<zappier-host>` (edge meters, then proxies).
3. Sign up on `/portal`, copy `x-api-key`.
## Scale
```bash
docker compose up --scale archive-worm=3 --scale tree-node=3
```
Do not publish `4222`. To debug NATS from the host:
```bash
docker compose exec nats1 wget -qO- http://127.0.0.1:8222/healthz
```
## Operator console
Fleet is **not** inside Compose by default (it SSH-spawns). On the Docker host:
```bash
cd $MONOREPO/packages/verae-fleet
NATS_URL=nats://127.0.0.1:4222 # only if you published 4222 on localhost for lab
node src/cli.js serve # http://127.0.0.1:3850/ loopback
```
For Compose-only labs, skip fleet; replica counts come from `--scale`.