Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
147 lines (141 loc) · 4.12 KB
/
Copy pathdocker-compose.yml
File metadata and controls
147 lines (141 loc) · 4.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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
services:
postgres:
image: postgres:16
container_name: memoryops-postgres
environment:
POSTGRES_DB: memoryops
POSTGRES_USER: memoryops
POSTGRES_PASSWORD: memoryops
# Bind to localhost only — dev convenience; use docker-compose.prod.yml for production
ports:
- "127.0.0.1:5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U memoryops -d memoryops"]
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
redis:
image: redis:7
container_name: memoryops-redis
command: ["redis-server", "--appendonly", "yes"]
ports:
- "127.0.0.1:6379:6379"
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
qdrant:
# Pin to a specific release — do not use :latest in shared environments
image: qdrant/qdrant:v1.13.6
container_name: memoryops-qdrant
ports:
- "127.0.0.1:6333:6333"
- "127.0.0.1:6334:6334"
volumes:
- qdrant-data:/qdrant/storage
healthcheck:
test: ["CMD", "bash", "-c", "</dev/tcp/127.0.0.1/6333"]
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
frontend:
image: quazmoz/memoryops:frontend-latest
build:
context: ./frontend
dockerfile: Dockerfile
args:
VITE_API_BASE_URL: /api
# VITE_MEMORYOPS_WORKSPACE_ID is no longer baked into the image.
# Set MEMORYOPS_WORKSPACE_ID at runtime instead.
container_name: memoryops-frontend
ports:
- "127.0.0.1:5173:8080"
environment:
# Runtime workspace ID served by /config.json
MEMORYOPS_WORKSPACE_ID: ${MEMORYOPS_WORKSPACE_ID:-${VITE_MEMORYOPS_WORKSPACE_ID:-}}
depends_on:
api:
condition: service_healthy
healthcheck:
test: ["CMD", "/memoryops-frontend", "--healthcheck"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
api:
image: quazmoz/memoryops:api-latest
build:
context: .
target: api-runtime
command: ["/usr/local/bin/api"]
ports:
- "127.0.0.1:8080:8080"
environment:
DATABASE_URL: postgres://memoryops:memoryops@postgres:5432/memoryops
REDIS_URL: redis://redis:6379
QDRANT_URL: http://qdrant:6334
APP_HOST: 0.0.0.0
APP_PORT: "8080"
APP_ENV: ${APP_ENV:-development}
APP_SECRET_KEY: ${APP_SECRET_KEY}
# Webhook signing secrets are stored per workspace via /v1/workspaces/{id}/integrations.
WORKSPACE_CREATION_SECRET: ${WORKSPACE_CREATION_SECRET}
# Set to false after bootstrap to disable POST /v1/workspaces.
WORKSPACE_CREATION_ENABLED: ${WORKSPACE_CREATION_ENABLED:-true}
# Trusted reverse-proxy CIDRs for X-Forwarded-For (comma-separated CIDR notation)
TRUSTED_PROXY_CIDRS: ${TRUSTED_PROXY_CIDRS:-127.0.0.1/32}
volumes:
- ./.gemini:/app/.gemini
- ./.claude:/app/.claude
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
qdrant:
condition: service_healthy
healthcheck:
test: ["CMD", "/usr/local/bin/memoryops-healthcheck", "8080", "/health/ready"]
interval: 10s
timeout: 5s
retries: 12
start_period: 20s
restart: unless-stopped
mcp:
image: quazmoz/memoryops:mcp-latest
build:
context: .
target: mcp-runtime
command: ["/usr/local/bin/mcp"]
ports:
- "127.0.0.1:3003:3003"
environment:
DATABASE_URL: postgres://memoryops:memoryops@postgres:5432/memoryops
REDIS_URL: redis://redis:6379
QDRANT_URL: http://qdrant:6334
MCP_PORT: "3003"
MCP_TRANSPORT: "http"
APP_SECRET_KEY: ${APP_SECRET_KEY}
volumes:
- ./.gemini:/app/.gemini
- ./.claude:/app/.claude
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
qdrant:
condition: service_healthy
restart: unless-stopped
volumes:
postgres-data:
redis-data:
qdrant-data: