File size: 4,390 Bytes
8f5564f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | version: "3.8"
services:
# ββ Prolog Logic Engine ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
logic-engine:
image: swipl/swipl:stable
container_name: marketscope-logic
ports:
- "8080:8080"
volumes:
- ./packages/prolog-rules:/rules:ro
- ./apps/logic-engine/server.pl:/app/server.pl:ro
command: >
swipl /app/server.pl
--port 8080
--rules-dir /rules
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 10s
timeout: 5s
retries: 3
networks:
- marketnet
# ββ Rust Ingestor βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ingestor:
build:
context: ./apps/ingestor
dockerfile: Dockerfile
container_name: marketscope-ingestor
ports:
- "3001:3001"
environment:
- PLASMA_GATE_KEY=${PLASMA_GATE_KEY}
- REDIS_URL=redis://redis:6379
- LOGIC_ENGINE_URL=http://logic-engine:8080
- WORM_ENDPOINT=http://auditor:8090
depends_on:
- logic-engine
- redis
- auditor
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/health"]
interval: 10s
timeout: 5s
retries: 3
networks:
- marketnet
# ββ Quant Engine (Python) βββββββββββββββββββββββββββββββββββββββββββββββββββ
quant-engine:
build:
context: ./apps/quant-engine
dockerfile: Dockerfile
container_name: marketscope-quant
ports:
- "8081:8081"
environment:
- WORM_ENDPOINT=http://auditor:8090
- LOGIC_ENGINE_URL=http://logic-engine:8080
depends_on:
- logic-engine
- auditor
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8081/health"]
interval: 10s
timeout: 5s
retries: 3
networks:
- marketnet
# ββ Auditor (WORM Chain) ββββββββββββββββββββββββββββββββββββββββββββββββββββ
auditor:
build:
context: ./apps/auditor
dockerfile: Dockerfile
container_name: marketscope-auditor
ports:
- "8090:8090"
volumes:
- worm-data:/worm
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/health"]
interval: 10s
timeout: 5s
retries: 3
networks:
- marketnet
# ββ Council UI (Next.js) ββββββββββββββββββββββββββββββββββββββββββββββββββββ
council-ui:
build:
context: ./apps/council-ui
dockerfile: Dockerfile
container_name: marketscope-ui
ports:
- "3000:3000"
environment:
- INGESTOR_URL=http://ingestor:3001
- QUANT_URL=http://quant-engine:8081
- AUDITOR_URL=http://auditor:8090
depends_on:
- ingestor
- quant-engine
- auditor
networks:
- marketnet
# ββ Redis (Feature Cache) βββββββββββββββββββββββββββββββββββββββββββββββββββ
redis:
image: redis:7-alpine
container_name: marketscope-redis
ports:
- "6379:6379"
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 3
networks:
- marketnet
# ββ DuckDB (Feature Store) ββββββββββββββββββββββββββββββββββββββββββββββββββ
duckdb:
image: cynerd/duckdb:latest
container_name: marketscope-duckdb
ports:
- "19275:19275"
volumes:
- duckdb-data:/data
networks:
- marketnet
volumes:
worm-data:
redis-data:
duckdb-data:
networks:
marketnet:
driver: bridge
|