Repository navigation
Expand file tree
/
Copy pathdocker-compose.dev.yml
More file actions
147 lines (141 loc) · 5.43 KB
/
Copy pathdocker-compose.dev.yml
File metadata and controls
147 lines (141 loc) · 5.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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# Development overlay (hot reload for Rust and Vite). Selected by the `dev`
# profile and combinable with vpn and monitoring:
# make up PROFILES=dev,vpn,monitoring
# ./scripts/compose.sh --profile dev --profile vpn --profile monitoring up --build
services:
postgres:
command: postgres -c max_connections=255 -c maintenance_work_mem=2GB
networks:
- internal
- edge
ports:
- "5432:5432"
valkey:
networks:
- internal
- edge
ports:
- "6379:6379"
manager:
image: zone-manager:dev
build:
context: .
dockerfile: manager/Dockerfile.dev
ports:
- "8000:8000"
volumes:
# Mount Rust source code for hot reload
- ./runner:/app/runner:cached
# Persist cargo cache for faster rebuilds
- cargo-registry:/usr/local/cargo/registry
- cargo-git:/usr/local/cargo/git
- cargo-target:/app/runner/target
- embed-cache:/app/embed-cache
- agent-state:/app/agent-state
environment:
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD_URLENCODED}@postgres:5432/${MANAGER_POSTGRES_DB:-manager}
- REDIS_URL=redis://valkey:6379
- LITELLM_HOST=http://litellm:4000
- ZONE_CHAT_ROUNDS=${ZONE_CHAT_ROUNDS:-64}
- ZONE_CHAT_CALLS=${ZONE_CHAT_CALLS:-256}
- ZONE_CHAT_TIMEOUT_SECONDS=${ZONE_CHAT_TIMEOUT_SECONDS:-1800}
- ZONE_CHAT_OUTPUT_TOKENS=${ZONE_CHAT_OUTPUT_TOKENS:-4096}
- ZONE_CHAT_CONTEXT_TOKENS=${ZONE_CHAT_CONTEXT_TOKENS:-32768}
- ZONE_CHAT_AGENT_CWD=${ZONE_CHAT_AGENT_CWD:-/app/runner}
- LITELLM_KEY=${SECURITY_LITELLM_MASTER_KEY}
- OLLAMA_HOST=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
- OLLAMA_MODEL_FAST=${OLLAMA_MODEL_FAST:-}
- OLLAMA_MODEL_REASON=${OLLAMA_MODEL_REASON:-}
- OLLAMA_MODEL_EMBED=${OLLAMA_MODEL_EMBED:-}
- OLLAMA_MODEL_VISION=${OLLAMA_MODEL_VISION:-}
- EMBEDDING_ENGINE=${EMBEDDING_ENGINE:-ollama}
- ZONE_EMBED_CACHE_DIR=/app/embed-cache
- JWT_SECRET=${JWT_SECRET}
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
- CORS_ORIGINS=http://localhost:3001,http://console:3001
# Traefik's consoles, plus the Vite server published on localhost:3001.
- ZONE_CONSOLE_ORIGINS=${ZONE_CONSOLE_ORIGINS-http://localhost:3001,http://manager.localhost,https://manager.localhost,http://manager.${DOMAIN_HOST_WEBUI},https://manager.${DOMAIN_HOST_WEBUI}}
- SQLX_OFFLINE=true
- RUST_LOG=zone_server=debug,zone_core=debug,zone_context=debug
- RUST_BACKTRACE=1
- SEARCH_ENABLE_WEB_SEARCH=${SEARCH_ENABLE_WEB_SEARCH:-true}
- ZONE_VPN=${ZONE_VPN:-}
- ZONE_VPN_REQUIRED=${ZONE_VPN_REQUIRED:-}
- VPN_WIREGUARD_PRIVATE_KEY=${VPN_WIREGUARD_PRIVATE_KEY:+1}
- VPN_OPENVPN_USER=${VPN_OPENVPN_USER:+1}
- "SEARCH_SEARXNG_QUERY_URL=${SEARCH_SEARXNG_QUERY_URL:-http://gluetun:8080/search?q=<query>&format=json}"
- SEARCH_RESULT_COUNT=${SEARCH_RESULT_COUNT:-5}
- SEARCH_TIMEOUT_SECONDS=${SEARCH_TIMEOUT_SECONDS:-15}
- MODEL_SEARCH_PROXY_URL=${MODEL_SEARCH_PROXY_URL:-}
- GITHUB_API_URL=${GITHUB_API_URL:-}
- TOOL_RUNNER_PROXY_URL=${TOOL_RUNNER_PROXY_URL:-}
- ZONE_MCP_ENABLED=${ZONE_MCP_ENABLED:-true}
- ZONE_MCP_AUTO_MAGENTS=${ZONE_MCP_AUTO_MAGENTS:-true}
- ZONE_MCP_CONFIG=${ZONE_MCP_CONFIG:-}
- ZONE_MCP_SERVERS=${ZONE_MCP_SERVERS:-}
- MONITORING_ENABLED=${MONITORING_ENABLED:-true}
- MONITORING_PROMETHEUS_URL=${MONITORING_PROMETHEUS_URL:-http://prometheus:9090}
- MONITORING_GRAFANA_URL=${MONITORING_GRAFANA_URL:-http://grafana:3000}
- MONITORING_GRAFANA_ADMIN_USER=${MONITORING_GRAFANA_ADMIN_USER:-admin}
- MONITORING_GRAFANA_ADMIN_PASSWORD=${MONITORING_GRAFANA_ADMIN_PASSWORD:-}
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
# Relax health check for development (rebuilds take time)
test: ["CMD", "true"]
interval: 60s
timeout: 10s
retries: 3
start_period: 120s
console:
image: zone-console:dev
build:
context: .
dockerfile: manager/frontend/Dockerfile.dev
init: true
ports:
- "3001:3001"
volumes:
- ./manager/frontend/src:/workspace/manager/frontend/src
- ./manager/frontend/public:/workspace/manager/frontend/public
- ./manager/frontend/index.html:/workspace/manager/frontend/index.html
- ./manager/frontend/vite.config.ts:/workspace/manager/frontend/vite.config.ts
- ./manager/frontend/tsconfig.json:/workspace/manager/frontend/tsconfig.json
- ./packages/ui/src:/workspace/packages/ui/src
- console-workspace-modules:/workspace/node_modules
environment:
- VITE_API_URL=
- VITE_PROXY_TARGET=http://manager:8000
- VITE_USE_POLLING=true
- CHOKIDAR_USEPOLLING=true
- CHOKIDAR_INTERVAL=300
networks:
- edge
- internal
depends_on:
manager:
condition: service_started
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3001/"]
interval: 30s
timeout: 5s
retries: 3
start_period: 60s
networks:
internal:
name: zone_internal
edge:
name: zone_edge
volumes:
cargo-registry:
name: zone_dev_cargo_registry
cargo-git:
name: zone_dev_cargo_git
cargo-target:
name: zone_dev_cargo_target
embed-cache:
name: zone_dev_embed_cache
agent-state:
name: zone_dev_agent_state
console-workspace-modules:
name: zone_dev_console_workspace_modules