-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
132 lines (125 loc) · 4.43 KB
/
docker-compose.yml
File metadata and controls
132 lines (125 loc) · 4.43 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
# Agent Studio — self-hosted Docker Compose
#
# Quick start:
# cp .env.example .env # fill in API keys
# docker compose up -d # start all services
# docker compose logs -f app # watch app logs
#
# With the optional ECC Skills MCP service:
# docker compose --profile ecc up -d
#
# For local development (live reload + debug):
# docker compose up # docker-compose.override.yml is applied automatically
services:
# ── Database migrations ─────────────────────────────────────────────────────
# Runs `prisma migrate deploy` once before the app starts, then exits.
migrate:
build:
context: .
dockerfile: Dockerfile
target: migrate
env_file: .env
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/agent_studio
DIRECT_URL: postgresql://postgres:postgres@postgres:5432/agent_studio
depends_on:
postgres:
condition: service_healthy
restart: "no"
# ── Next.js application ─────────────────────────────────────────────────────
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
env_file: .env
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/agent_studio
DIRECT_URL: postgresql://postgres:postgres@postgres:5432/agent_studio
REDIS_URL: redis://redis:6379
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
migrate:
condition: service_completed_successfully
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
start_period: 40s
retries: 3
restart: unless-stopped
# ── BullMQ worker ───────────────────────────────────────────────────────────
# Processes background jobs: chat pipeline, eval runs, webhook retries.
# Requires REDIS_URL. Scale up with: docker compose scale worker=2
worker:
build:
context: .
dockerfile: Dockerfile
target: worker
env_file: .env
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/agent_studio
REDIS_URL: redis://redis:6379
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
migrate:
condition: service_completed_successfully
restart: unless-stopped
# ── PostgreSQL + pgvector ───────────────────────────────────────────────────
postgres:
image: pgvector/pgvector:pg16
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: agent_studio
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
# ── Redis ───────────────────────────────────────────────────────────────────
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redisdata:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
# ── ECC Skills MCP (optional) ───────────────────────────────────────────────
# Exposes the ECC skill library via MCP protocol.
# Enable with: docker compose --profile ecc up -d
# Then set ECC_ENABLED=true and ECC_MCP_URL=http://ecc-mcp:8000 in .env.
ecc-mcp:
profiles:
- ecc
build:
context: ./services/ecc-skills-mcp
ports:
- "8000:8000"
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/agent_studio
PORT: "8000"
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
volumes:
pgdata:
redisdata: