-
Notifications
You must be signed in to change notification settings - Fork 219
Expand file tree
/
Copy pathdocker-compose-local-build.yml
More file actions
151 lines (144 loc) · 4.67 KB
/
Copy pathdocker-compose-local-build.yml
File metadata and controls
151 lines (144 loc) · 4.67 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
148
149
150
151
# This compose definition builds Laminar images locally. This is meant to be
# run at the last step of local development as a check before pushing changes.
name: lmnr
services:
rabbitmq:
image: rabbitmq
pull_policy: always
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS}
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 7s
timeout: 5s
retries: 3
clickhouse:
image: clickhouse/clickhouse-server:26.5
pull_policy: always
container_name: clickhouse
volumes:
- type: volume
source: clickhouse-data
target: /var/lib/clickhouse/
- type: volume
source: clickhouse-logs
target: /var/log/clickhouse-server/
- type: bind
source: ./clickhouse-profiles-config.xml
target: /etc/clickhouse-server/users.d/lmnr.xml
environment:
CLICKHOUSE_USER: ${CLICKHOUSE_USER}
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
ulimits:
nofile:
soft: 262144
hard: 262144
postgres:
image: postgres:16
pull_policy: always
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
healthcheck:
test:
["CMD", "pg_isready", "-U", "${POSTGRES_USER}", "-d", "${POSTGRES_DB}"]
interval: 2s
timeout: 5s
retries: 5
quickwit:
image: quickwit/quickwit:v0.8.2
pull_policy: always
ports:
- "7280:7280" # REST API and UI
- "7281:7281" # OTLP / gRPC
environment:
QW_DATA_DIR: /quickwit/qwdata
command: ["run"]
volumes:
- quickwit-data:/quickwit/qwdata
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7280/health/livez"]
interval: 10s
timeout: 5s
retries: 3
app-server:
ports:
- "${APP_SERVER_HOST_PORT:-8000}:8000"
- "${APP_SERVER_GRPC_HOST_PORT:-8001}:8001"
- "${APP_SERVER_RT_HOST_PORT:-8002}:8002"
build:
context: ./app-server
container_name: app-server
depends_on:
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
clickhouse:
condition: service_started
quickwit:
condition: service_healthy
environment:
PORT: 8000
GRPC_PORT: 8001
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
RABBITMQ_URL: amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@rabbitmq:5672/%2f
SHARED_SECRET_TOKEN: ${SHARED_SECRET_TOKEN}
CLICKHOUSE_URL: http://clickhouse:8123
CLICKHOUSE_USER: ${CLICKHOUSE_USER}
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
CLICKHOUSE_RO_USER: ${CLICKHOUSE_RO_USER}
CLICKHOUSE_RO_PASSWORD: ${CLICKHOUSE_RO_PASSWORD}
ENVIRONMENT: FULL
AEAD_SECRET_KEY: ${AEAD_SECRET_KEY}
QUICKWIT_SEARCH_URL: http://quickwit:7280
QUICKWIT_INGEST_URL: http://quickwit:7281
QUICKWIT_SPANS_INDEX_ID: spans_v2
frontend:
build:
context: ./frontend
container_name: frontend
ports:
- "${FRONTEND_HOST_PORT:-3000}:3000"
depends_on:
postgres:
condition: service_healthy
clickhouse:
condition: service_started
quickwit:
condition: service_healthy
environment:
PORT: 3000
BACKEND_URL: http://app-server:8000
BACKEND_RT_URL: http://app-server:8002
SHARED_SECRET_TOKEN: ${SHARED_SECRET_TOKEN}
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
ENVIRONMENT: FULL
CLICKHOUSE_URL: http://clickhouse:8123
CLICKHOUSE_USER: ${CLICKHOUSE_USER}
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
OPENAI_API_KEY: ${OPENAI_API_KEY}
AEAD_SECRET_KEY: ${AEAD_SECRET_KEY}
QUICKWIT_SEARCH_URL: http://quickwit:7280
# LLM provider for frontend AI features (chat-with-trace, SQL-with-AI).
# openai | gemini | bedrock. openai/gemini use LLM_API_KEY (+ optional LLM_BASE_URL);
# bedrock uses AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_REGION.
LLM_PROVIDER: ${LLM_PROVIDER}
LLM_BASE_URL: ${LLM_BASE_URL}
LLM_API_KEY: ${LLM_API_KEY}
# LLM_MODEL_* overrides (optional — per-provider defaults apply when unset).
LLM_MODEL_SMALL: ${LLM_MODEL_SMALL}
LLM_MODEL_MEDIUM: ${LLM_MODEL_MEDIUM}
LLM_MODEL_LARGE: ${LLM_MODEL_LARGE}
AWS_REGION: ${AWS_REGION}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
volumes:
clickhouse-data:
clickhouse-logs:
postgres-data:
quickwit-data: