-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
111 lines (106 loc) · 4.28 KB
/
docker-compose.yml
File metadata and controls
111 lines (106 loc) · 4.28 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
services:
postgres:
image: postgres:16-alpine@sha256:97ff59a4e30e08d1c11bdcd9455e7832368c0572b576c9092cde2df4ae5552a3
environment:
POSTGRES_DB: ${POSTGRES_DB:-prdforge}
POSTGRES_USER: ${POSTGRES_USER:-prdforge}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-prdforge}
ports:
- "127.0.0.1:${POSTGRES_PORT:-5432}:5432"
volumes:
- pgdata:/var/lib/postgresql/data
- ./db/01_init.sql:/docker-entrypoint-initdb.d/01_init.sql:ro
# Default seed: SnapHabit sample project (12 sections, 12 deps)
- ./db/02_seed.sql:/docker-entrypoint-initdb.d/02_seed.sql:ro
- ./db/03_comments.sql:/docker-entrypoint-initdb.d/03_comments.sql:ro
- ./db/04_replies_and_settings.sql:/docker-entrypoint-initdb.d/04_replies_and_settings.sql:ro
- ./db/05_token_stats.sql:/docker-entrypoint-initdb.d/05_token_stats.sql:ro
- ./db/06_chat.sql:/docker-entrypoint-initdb.d/06_chat.sql:ro
- ./db/07_multi_user.sql:/docker-entrypoint-initdb.d/07_multi_user.sql:ro
- ./db/08_mcp_activity.sql:/docker-entrypoint-initdb.d/08_mcp_activity.sql:ro
- ./db/09_audit.sql:/docker-entrypoint-initdb.d/09_audit.sql:ro
- ./db/10_password_reset.sql:/docker-entrypoint-initdb.d/10_password_reset.sql:ro
- ./db/11_chat_multiuser.sql:/docker-entrypoint-initdb.d/11_chat_multiuser.sql:ro
- ./db/12_better_auth.sql:/docker-entrypoint-initdb.d/12_better_auth.sql:ro
- ./db/13_section_access_log.sql:/docker-entrypoint-initdb.d/13_section_access_log.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-prdforge}"]
interval: 3s
timeout: 2s
retries: 10
restart: unless-stopped
mcp-server:
build:
context: .
dockerfile: mcp_server/Dockerfile
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-prdforge}:${POSTGRES_PASSWORD:-prdforge}@postgres:5432/${POSTGRES_DB:-prdforge}
ports:
- "127.0.0.1:8080:8080"
depends_on:
postgres:
condition: service_healthy
command: python server.py --http 8080
healthcheck:
test: ["CMD-SHELL", "python -c \"import socket; s=socket.create_connection(('localhost', 8080), 2); s.close()\""]
interval: 5s
timeout: 3s
retries: 5
start_period: 10s
restart: unless-stopped
python-api:
build:
context: .
dockerfile: api/Dockerfile
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-prdforge}:${POSTGRES_PASSWORD:-prdforge}@postgres:5432/${POSTGRES_DB:-prdforge}
CHAT_PROVIDER: ${CHAT_PROVIDER:-claude_cli}
CHAT_MCP_URL: ${CHAT_MCP_URL:-http://mcp-server:8080/mcp/}
CLAUDE_CLI_PERMISSION_MODE: ${CLAUDE_CLI_PERMISSION_MODE:-acceptEdits}
CLAUDE_CLI_APPROVAL_PERMISSION_MODE: ${CLAUDE_CLI_APPROVAL_PERMISSION_MODE:-acceptEdits}
CLAUDE_CLI_MODEL: ${CLAUDE_CLI_MODEL:-}
CLAUDE_CLI_ARGS: ${CLAUDE_CLI_ARGS:-}
CLAUDE_CLI_PATH: ${CLAUDE_CLI_PATH:-claude}
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
ANTHROPIC_MODEL: ${ANTHROPIC_MODEL:-claude-3-7-sonnet-latest}
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
WS_TOKEN_SECRET: ${WS_TOKEN_SECRET:-dev-ws-secret-change-in-production-0000000000000000}
WS_TOKEN_TTL_SECONDS: ${WS_TOKEN_TTL_SECONDS:-120}
volumes:
- ${HOME}/.claude:/root/.claude
ports:
- "127.0.0.1:8088:8088"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
redis:
image: redis:7-alpine
ports:
- "127.0.0.1:6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 3s
timeout: 2s
retries: 5
restart: unless-stopped
frontend:
build:
context: .
dockerfile: frontend/Dockerfile
ports:
- "127.0.0.1:3000:3000"
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-prdforge}:${POSTGRES_PASSWORD:-prdforge}@postgres:5432/${POSTGRES_DB:-prdforge}
BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:-dev-better-auth-secret-change-in-production}
PRISMA_QUERY_ENGINE_LIBRARY: /app/node_modules/.prisma/client/libquery_engine-linux-musl-arm64-openssl-3.0.x.so.node
depends_on:
postgres:
condition: service_healthy
python-api:
condition: service_started
restart: unless-stopped
volumes:
pgdata: