Files
web-terminal/deploy/docker-compose.yml
Yaojia Wang 95b9cccf07 feat(relay): Phase1 foundation — P3 Postgres store + async capability verifier + compose
RELAY-PHASE1 Wave A (2/3) + E1 infra:
- A1: createPgStores() Postgres adapter for all 9 P3 store ports + runMigrations();
  writable-CTE atomic INV8 status swaps; 0002_routes.sql. 23/23 pg tests, 96.72% cov.
- A3: real capability verifier delegating to relay-auth verifyCapabilityToken; sync->async
  seam across authz/provision/main. Full CP suite 15 files/101 pass, tsc clean.
- E1: deploy/docker-compose.yml (Postgres16+Redis7, loopback-only) + .env.example.
- docs: PLAN_RELAY_PHASE1.md file-level execution spec; PROGRESS_LOG RELAY-PHASE1 section.
2026-07-06 14:51:37 +02:00

49 lines
1.5 KiB
YAML

# RELAY-PHASE1 · E1 — Postgres + Redis for the rendezvous-relay control-plane (P3) on the VPS.
#
# Both services bind to 127.0.0.1 ONLY — they are the relay's private state, never exposed on the
# public interface (INV9-adjacent; open only :443 + AGENT_PORT in the cloud security group). The
# control-plane / relay processes reach them over loopback.
#
# Usage on 8.138.1.192:
# cp deploy/.env.example deploy/.env # then fill secrets
# docker compose --env-file deploy/.env -f deploy/docker-compose.yml up -d
#
# PG_URL for the app = postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}
# REDIS_URL for the app = redis://127.0.0.1:6379
services:
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-relay}
POSTGRES_USER: ${POSTGRES_USER:-relay}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in deploy/.env}
ports:
- "127.0.0.1:5432:5432" # loopback-only
volumes:
- relay_pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-relay} -d ${POSTGRES_DB:-relay}"]
interval: 5s
timeout: 3s
retries: 10
redis:
image: redis:7
restart: unless-stopped
command: ["redis-server", "--appendonly", "yes"]
ports:
- "127.0.0.1:6379:6379" # loopback-only
volumes:
- relay_redisdata:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 10
volumes:
relay_pgdata:
relay_redisdata: