-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.prod.yml
More file actions
132 lines (126 loc) · 3.16 KB
/
Copy pathdocker-compose.prod.yml
File metadata and controls
132 lines (126 loc) · 3.16 KB
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
version: '3.8'
services:
# 1. GRAPH DATABASE (Long-term Memory)
neo4j:
image: neo4j:5.15.0-community
container_name: silhouette-prod-neo4j
ports:
- "7474:7474" # HTTP
- "7687:7687" # Bolt
environment:
NEO4J_AUTH: neo4j/${NEO4J_PASSWORD:-changeme_on_first_run}
NEO4J_apoc_export_file_enabled: "true"
NEO4J_apoc_import_file_enabled: "true"
NEO4J_PLUGINS: '["apoc"]'
NEO4J_dbms_memory_heap_initial__size: "256m"
NEO4J_dbms_memory_heap_max__size: "512m"
NEO4J_dbms_memory_pagecache_size: "256m"
volumes:
- ./data/neo4j/data:/data
- ./data/neo4j/plugins:/plugins
restart: unless-stopped
deploy:
resources:
limits:
memory: 1G
networks:
- silhouette-net
# 2. CACHE & PUBSUB (Short-term Memory)
redis:
image: redis:alpine
container_name: silhouette-prod-redis
command: redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru
ports:
- "6379:6379"
volumes:
- ./data/redis:/data
restart: unless-stopped
deploy:
resources:
limits:
memory: 256M
networks:
- silhouette-net
# 3. VECTOR DATABASE (Embeddings)
qdrant:
image: qdrant/qdrant
container_name: silhouette-prod-qdrant
ports:
- "6333:6333"
volumes:
- ./data/qdrant:/qdrant/storage
restart: unless-stopped
deploy:
resources:
limits:
memory: 512M
networks:
- silhouette-net
# 4. REASONING ENGINE (Python Microservice)
reasoning-engine:
build: ./reasoning_engine
container_name: silhouette-prod-reasoning
ports:
- "8000:8000"
environment:
- NEO4J_URI=bolt://neo4j:7687
- NEO4J_USER=neo4j
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-changeme_on_first_run}
depends_on:
- neo4j
restart: unless-stopped
deploy:
resources:
limits:
memory: 512M
networks:
- silhouette-net
# 5. CORE AGENT (Node.js)
bot:
build: .
container_name: silhouette-prod-core
ports:
- "3005:3005"
# Map additional ports if running local web servers via tools
- "8080-8090:8080-8090"
env_file:
- .env.local
environment:
- NODE_ENV=production
- NEO4J_URI=bolt://neo4j:7687
- REDIS_URL=redis://redis:6379
volumes:
# PERSISTENCE BIND MOUNTS
# 1. Agent Identity & Memory (The Soul)
- ./data:/app/data
# 2. Local Models (Large files)
- ./models:/app/models
# 3. Sandbox (Code Execution Output)
- ./sandbox:/app/sandbox
# 4. Logs
- ./logs:/app/logs
# 5. Configs
- ./silhouette.config.json:/app/silhouette.config.json
depends_on:
- redis
- qdrant
- neo4j
- reasoning-engine
restart: unless-stopped
deploy:
resources:
limits:
memory: 512M
networks:
- silhouette-net
# GPU Support (Uncomment if using local models in the container)
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
networks:
silhouette-net:
driver: bridge