synor/docker-compose.compute.yml
Gulshan Yadav 771f4f83ed feat(compute): integrate synor-compute with VM and hosting layers
VM Integration:
- Add compute module with offloadable operations support
- Enable distributed execution for heavy VM operations
- Support batch signature verification, merkle proofs, hashing
- Add ComputeContext for managing compute cluster connections
- Feature-gated behind 'compute' flag

Hosting Integration:
- Add edge compute module for serverless functions
- Support edge functions (WASM, JS, Python runtimes)
- Enable server-side rendering and image optimization
- Add AI/ML inference at the edge
- Feature-gated behind 'compute' flag

Docker Deployment:
- Add docker-compose.compute.yml for compute layer
- Deploy orchestrator, CPU workers, WASM worker, spot market
- Include Redis for task queue and Prometheus for metrics
- Reserved ports: 17250-17290 for compute services
2026-01-11 14:05:45 +05:30

240 lines
6.2 KiB
YAML

# Synor Compute Layer - Docker Compose
# Heterogeneous compute orchestration for AI/ML workloads
version: '3.9'
services:
# Compute Orchestrator (schedules tasks across workers)
compute-orchestrator:
build:
context: .
dockerfile: docker/compute-node/Dockerfile
container_name: synor-compute-orchestrator
hostname: compute-orchestrator
restart: unless-stopped
environment:
- RUST_LOG=info
- NODE_TYPE=orchestrator
- LISTEN_ADDR=0.0.0.0:17200
- WORKER_PORTS=17210,17211,17212,17213
- BALANCING_STRATEGY=balanced
- MAX_QUEUE_SIZE=10000
ports:
- "17250:17200" # Compute API
- "17252:17202" # Metrics/Health
networks:
- synor-compute-net
volumes:
- compute-orchestrator-data:/data/compute
depends_on:
- compute-worker-cpu-1
- compute-worker-cpu-2
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:17202/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
# CPU Worker Node 1 (x86-64 AVX2)
compute-worker-cpu-1:
build:
context: .
dockerfile: docker/compute-node/Dockerfile
container_name: synor-compute-worker-cpu-1
hostname: compute-worker-cpu-1
restart: unless-stopped
environment:
- RUST_LOG=info
- NODE_TYPE=worker
- PROCESSOR_TYPE=cpu
- CPU_VARIANT=x86_64_avx2
- LISTEN_ADDR=0.0.0.0:17210
- ORCHESTRATOR_URL=http://compute-orchestrator:17200
- MAX_CONCURRENT_TASKS=8
- WORK_STEAL_ENABLED=true
ports:
- "17260:17210" # Worker API
networks:
- synor-compute-net
volumes:
- compute-worker-cpu-1-data:/data/compute
deploy:
resources:
limits:
cpus: '4'
memory: 8G
reservations:
cpus: '2'
memory: 4G
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:17210/health"]
interval: 30s
timeout: 5s
retries: 3
# CPU Worker Node 2 (x86-64 AVX2)
compute-worker-cpu-2:
build:
context: .
dockerfile: docker/compute-node/Dockerfile
container_name: synor-compute-worker-cpu-2
hostname: compute-worker-cpu-2
restart: unless-stopped
environment:
- RUST_LOG=info
- NODE_TYPE=worker
- PROCESSOR_TYPE=cpu
- CPU_VARIANT=x86_64_avx2
- LISTEN_ADDR=0.0.0.0:17211
- ORCHESTRATOR_URL=http://compute-orchestrator:17200
- MAX_CONCURRENT_TASKS=8
- WORK_STEAL_ENABLED=true
ports:
- "17261:17211" # Worker API
networks:
- synor-compute-net
volumes:
- compute-worker-cpu-2-data:/data/compute
deploy:
resources:
limits:
cpus: '4'
memory: 8G
reservations:
cpus: '2'
memory: 4G
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:17211/health"]
interval: 30s
timeout: 5s
retries: 3
# WASM Worker (browser-compatible compute)
compute-worker-wasm:
build:
context: .
dockerfile: docker/compute-node/Dockerfile
container_name: synor-compute-worker-wasm
hostname: compute-worker-wasm
restart: unless-stopped
environment:
- RUST_LOG=info
- NODE_TYPE=worker
- PROCESSOR_TYPE=wasm
- LISTEN_ADDR=0.0.0.0:17212
- ORCHESTRATOR_URL=http://compute-orchestrator:17200
- MAX_CONCURRENT_TASKS=4
ports:
- "17262:17212" # Worker API
networks:
- synor-compute-net
volumes:
- compute-worker-wasm-data:/data/compute
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '1'
memory: 1G
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:17212/health"]
interval: 30s
timeout: 5s
retries: 3
# Spot Market Service
compute-spot-market:
build:
context: .
dockerfile: docker/compute-node/Dockerfile
container_name: synor-compute-spot-market
hostname: compute-spot-market
restart: unless-stopped
environment:
- RUST_LOG=info
- NODE_TYPE=market
- LISTEN_ADDR=0.0.0.0:17220
- ORCHESTRATOR_URL=http://compute-orchestrator:17200
- AUCTION_INTERVAL_MS=5000
- MIN_BID_MICRO=100
ports:
- "17270:17220" # Market API
networks:
- synor-compute-net
volumes:
- compute-spot-market-data:/data/compute
depends_on:
- compute-orchestrator
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:17220/health"]
interval: 30s
timeout: 5s
retries: 3
# Redis for task queue and caching
compute-redis:
image: redis:7-alpine
container_name: synor-compute-redis
hostname: compute-redis
restart: unless-stopped
command: redis-server --appendonly yes --maxmemory 1gb --maxmemory-policy allkeys-lru
ports:
- "17280:6379" # Redis port (remapped)
networks:
- synor-compute-net
volumes:
- compute-redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 15s
timeout: 5s
retries: 3
# Prometheus metrics
compute-prometheus:
image: prom/prometheus:latest
container_name: synor-compute-prometheus
hostname: compute-prometheus
restart: unless-stopped
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-lifecycle'
volumes:
- ./docker/compute-node/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- compute-prometheus-data:/prometheus
ports:
- "17290:9090" # Prometheus UI (remapped)
networks:
- synor-compute-net
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:9090/-/healthy"]
interval: 30s
timeout: 5s
retries: 3
volumes:
compute-orchestrator-data:
driver: local
compute-worker-cpu-1-data:
driver: local
compute-worker-cpu-2-data:
driver: local
compute-worker-wasm-data:
driver: local
compute-spot-market-data:
driver: local
compute-redis-data:
driver: local
compute-prometheus-data:
driver: local
networks:
synor-compute-net:
driver: bridge
ipam:
config:
- subnet: 172.23.0.0/16