mirror of
https://github.com/devkitshq/notifkit.git
synced 2026-10-19 18:24:52 +02:00
- Upgrade zod to ^4.6.5 along with compatible dependency updates across ai, dotenv, drizzle-orm, ioredis, pino, postgres, and dev tools. - Adjust tests/workers-ai.test.ts mock UUIDs to adhere to RFC 4122 v4 validation in Zod 4. - Update tests/http.test.ts validation message expectations for Zod 4. - Replace generic server container names with role-based definitions (api-server-1, api-server-2, enricher-worker, engine-worker, delivery-worker). - Add serverNodes option in distributed profiling harness to route and health-check designated worker and API nodes. - Add multi-run statistical metrics (mean, median, min, max, stdDev) reporting to money-scaling benchmark runner.
445 lines
12 KiB
YAML
445 lines
12 KiB
YAML
services:
|
|
db:
|
|
image: postgres:15-alpine
|
|
environment:
|
|
POSTGRES_DB: notifkit
|
|
POSTGRES_USER: notifkit
|
|
POSTGRES_PASSWORD: password
|
|
ports:
|
|
- "35432:5432"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${DB_CPUS:-1.0}"
|
|
memory: "${DB_MEMORY:-1G}"
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
ports:
|
|
- "36379:6379"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${REDIS_CPUS:-1.5}"
|
|
memory: "${REDIS_MEMORY:-1G}"
|
|
|
|
# ── Descriptive Role-Based Services ──────────────────────────────────────────
|
|
|
|
api-server-1:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${API_SERVER_1_SERVICES:-api}
|
|
ports:
|
|
- "35678:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
api-server-2:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${API_SERVER_2_SERVICES:-api}
|
|
ports:
|
|
- "35679:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
pipeline-worker:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${PIPELINE_WORKER_SERVICES:-enricher,engine,scheduler}
|
|
ports:
|
|
- "35680:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
delivery-worker:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${DELIVERY_WORKER_SERVICES:-delivery}
|
|
ports:
|
|
- "35681:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
scheduler-worker:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${SCHEDULER_WORKER_SERVICES:-scheduler}
|
|
ports:
|
|
- "35682:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
enricher-worker:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${ENRICHER_WORKER_SERVICES:-enricher}
|
|
ports:
|
|
- "35683:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
engine-worker:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${ENGINE_WORKER_SERVICES:-engine}
|
|
ports:
|
|
- "35684:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
monolith-server:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${MONOLITH_SERVER_SERVICES:-all}
|
|
ports:
|
|
- "35678:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
worker-node:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${WORKER_NODE_SERVICES:-enricher,engine,delivery,scheduler}
|
|
ports:
|
|
- "35679:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
# ── Generic Server Definitions (Backwards Compatibility) ─────────────────────
|
|
|
|
server1:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${SERVER1_SERVICES:-all}
|
|
ports:
|
|
- "35678:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
server2:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${SERVER2_SERVICES:-all}
|
|
ports:
|
|
- "35679:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
server3:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${SERVER3_SERVICES:-all}
|
|
ports:
|
|
- "35680:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
server4:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${SERVER4_SERVICES:-all}
|
|
ports:
|
|
- "35681:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
server5:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${SERVER5_SERVICES:-all}
|
|
ports:
|
|
- "35682:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
server6:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${SERVER6_SERVICES:-all}
|
|
ports:
|
|
- "35683:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|
|
|
|
server7:
|
|
build:
|
|
context: ..
|
|
dockerfile: profiling/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgres://notifkit:password@db:5432/notifkit
|
|
REDIS_URL: redis://redis:6379
|
|
ADMIN_API_KEY: perf-admin-key
|
|
LOG_LEVEL: warn
|
|
HOST: 0.0.0.0
|
|
WORKER_CONCURRENCY: ${WORKER_CONCURRENCY:-100}
|
|
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS:-5}
|
|
PROVIDER_LATENCY_MS: ${PROVIDER_LATENCY_MS:-0}
|
|
RATE_LIMIT_PER_HOUR: ${RATE_LIMIT_PER_HOUR:-10000000}
|
|
SERVICES: ${SERVER7_SERVICES:-all}
|
|
ports:
|
|
- "35684:3000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: "${SERVER_CPUS:-2.0}"
|
|
memory: "${SERVER_MEMORY:-2G}"
|