-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompose.yml
More file actions
136 lines (131 loc) · 3.52 KB
/
compose.yml
File metadata and controls
136 lines (131 loc) · 3.52 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
version: "3.9"
services:
mh-api-dbsrv01:
image: mysql:8.0.29
platform: linux/amd64
container_name: mh-api-dbsrv01
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_USER: mh-api
MYSQL_PASSWORD: P@ssw0rd
MYSQL_DATABASE: mh-api
MYSQL_ROOT_PASSWORD: pass
MYSQL_TCP_PORT: 3306
LANG: C.UTF-8
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "mh-api", "-pP@ssw0rd"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
volumes:
- mh-api-dbsrv01-data:/var/lib/mysql
- ./db/mysql/conf.d/my.cnf:/etc/mysql/conf.d/my.cnf
- ./db/mysql/sql:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
mh-api-srv:
depends_on:
- mh-api-dbsrv01
build:
context: .
dockerfile: Dockerfile
target: dev
container_name: mh-api-srv
environment:
ENV: dev
PORT: 8080
DATABASE_URL: mh-api:P@ssw0rd@tcp(mh-api-dbsrv01)/mh-api?charset=utf8&parseTime=True&loc=Local
ALLOW_URL: "*"
OTEL_EXPORTER_OTLP_ENDPOINT: tempo:4317
OTEL_EXPORTER_OTLP_INSECURE: "true"
PYROSCOPE_SERVER_ADDRESS: http://pyroscope:4040
volumes:
- ./:/app
ports:
- "8080:8080"
mcp:
build:
context: .
dockerfile: Dockerfile
target: dev-mcp
container_name: mh-mcp-server
ports:
- "8081:8080"
environment:
- DATABASE_URL=mh-api:P@ssw0rd@tcp(mh-api-dbsrv01)/mh-api?charset=utf8&parseTime=True&loc=Local
- ENV=DEV
- LOG_LEVEL=INFO
- SERVICE_NAME=mh-mcp
- PROJECTID=mh-api-local
volumes:
- ./:/app
agent:
depends_on:
- mh-api-dbsrv01
build:
context: .
dockerfile: Dockerfile
target: dev-agent
container_name: mh-agent-server
ports:
- "8082:8080"
environment:
- DATABASE_URL=mh-api:P@ssw0rd@tcp(mh-api-dbsrv01)/mh-api?charset=utf8&parseTime=True&loc=Local
- GEMINI_API_KEY=${GEMINI_API_KEY}
- GEMINI_MODEL=gemini-2.0-flash-exp
- PORT=8080
- ENV=dev
volumes:
- ./:/app
command: air -c .air.agent.toml
# ----- Observability Stack (local dev) -----
tempo:
image: grafana/tempo:latest
container_name: mh-tempo
command: ["-config.file=/etc/tempo.yml"]
volumes:
- ./docker/tempo.yml:/etc/tempo.yml
- mh-tempo-data:/var/tempo
ports:
- "3200:3200" # Tempo HTTP API
- "4317:4317" # OTLP gRPC
- "4318:4318" # OTLP HTTP
prometheus:
image: prom/prometheus:latest
container_name: mh-prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.enable-lifecycle
volumes:
- ./docker/prometheus.yml:/etc/prometheus/prometheus.yml
- mh-prometheus-data:/prometheus
ports:
- "9090:9090"
pyroscope:
image: grafana/pyroscope:latest
container_name: mh-pyroscope
ports:
- "4040:4040"
grafana:
image: grafana/grafana:latest
container_name: mh-grafana
environment:
GF_AUTH_ANONYMOUS_ENABLED: "true"
GF_AUTH_ANONYMOUS_ORG_ROLE: Admin
GF_AUTH_DISABLE_LOGIN_FORM: "true"
volumes:
- ./docker/grafana/provisioning:/etc/grafana/provisioning
- mh-grafana-data:/var/lib/grafana
ports:
- "3000:3000"
depends_on:
- prometheus
- tempo
volumes:
mh-api-dbsrv01-data:
mh-tempo-data:
mh-prometheus-data:
mh-grafana-data: