-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
120 lines (113 loc) · 3.12 KB
/
Copy pathdocker-compose.yml
File metadata and controls
120 lines (113 loc) · 3.12 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
# Athena — Docker Compose orchestration
#
# Usage:
# docker compose up — start all services (backend + frontend)
# docker compose --profile tunnel up — also start ngrok tunnel for MCP
# docker compose --profile heartbeat up — also start proactive heartbeat service
#
# Vault access:
# Set VAULT_PATH in .env to your local Obsidian vault path.
# It's mounted at /vault inside the container (read-write).
services:
# --- Artemis Backend ---
artemis:
build:
context: ./services/artemis-backend
ports:
- "8000:8000"
env_file:
- .env
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
restart: unless-stopped
# --- Athena MCP Server ---
mcp-server:
build:
context: ./mcp-server
dockerfile: Dockerfile
ports:
- "${MCP_SERVER_PORT:-8001}:8001"
volumes:
- "${VAULT_PATH:-./sample-vault}:/vault:rw"
env_file:
- .env
environment:
- VAULT_PATH=/vault
- ARTEMIS_BASE_URL=http://artemis:8000
depends_on:
artemis:
condition: service_started
restart: unless-stopped
# --- Athena Voice Proxy ---
voice-proxy:
build:
context: ./voice-client
dockerfile: Dockerfile
ports:
- "3001:3001"
volumes:
- "${VAULT_PATH:-./sample-vault}:/vault:ro"
env_file:
- .env
environment:
- VAULT_PATH=/vault
restart: unless-stopped
# --- Artemis Frontend ---
artemis-frontend:
build:
context: ./frontend
args:
- SUPABASE_URL=${SUPABASE_URL:-}
- SUPABASE_ANON_KEY=${SUPABASE_ANON_KEY:-}
- VITE_API_URL=http://localhost:8000
ports:
- "3000:3000"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- voice-proxy
restart: unless-stopped
# --- Indexer Watcher (auto-syncs vault changes to Elasticsearch) ---
indexer-watcher:
build:
context: ./indexer
dockerfile: Dockerfile
volumes:
- "${VAULT_PATH:-./sample-vault}:/vault:ro"
env_file:
- .env
environment:
- VAULT_PATH=/vault
restart: unless-stopped
# --- Athena Heartbeat Service (optional — use --profile heartbeat) ---
heartbeat:
profiles:
- heartbeat
build:
context: ./heartbeat
dockerfile: Dockerfile
volumes:
- "${VAULT_PATH:-./sample-vault}:/vault:rw"
env_file:
- .env
environment:
- VAULT_PATH=/vault
stop_grace_period: 30s
restart: unless-stopped
# --- ngrok tunnel (optional — use --profile tunnel) ---
ngrok:
profiles:
- tunnel
image: ngrok/ngrok:latest
command: http --url=${NGROK_DOMAIN:-sylas-saporific-ilona.ngrok-free.dev} mcp-server:8001
ports:
- "4040:4040"
environment:
- NGROK_AUTHTOKEN=${NGROK_AUTHTOKEN:-}
depends_on:
- mcp-server
restart: unless-stopped