Add resource limits, log rotation, and DRY up docker-compose for CPX32
Sized for Hetzner CPX32 (4 vCPU, 8GB RAM):
- ClickHouse 4GB/2cpu, web 1.5GB/1cpu, queue 1GB/0.5cpu, jetstream 512MB/0.5cpu
- Add json-file log rotation (10MB, 3 files) to all services
- Add restart: unless-stopped to ClickHouse
- Remove ClickHouse host port (only needed inter-container)
- Add stop_grace_period: 30s to jetstream for cursor checkpoint
- Relax web health check interval from 2s to 10s
- DRY up env vars with YAML anchors (x-common-env, x-logging)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>