-
-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathcompose.dev.yml
More file actions
213 lines (199 loc) · 5.94 KB
/
compose.dev.yml
File metadata and controls
213 lines (199 loc) · 5.94 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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# Development compose with hot reload
# Usage: docker compose -f compose.dev.yml up
services:
# Frontend with Vite hot reload
chatmap-ui:
image: node:22-alpine
working_dir: /app
command: sh -c "apk add --no-cache gettext && envsubst < /app/public/config.tpl.json > /app/public/config.json && yarn install --legacy-peer-deps && yarn start -- --host"
ports:
- "5173:5173"
environment:
- NODE_ENV=development
- HANKO_API_URL=http://localhost:8002
- ENABLE_LIVE=${ENABLE_LIVE:-true}
- ENABLE_AUTH=${ENABLE_AUTH:-true}
- LOGIN_URL=${LOGIN_URL:-http://localhost:5173/#/app}
- CHATMAP_API_URL=${CHATMAP_API_URL:-http://localhost:8000}
- CHATMAP_API_URL_SUFFIX=${CHATMAP_API_URL_SUFFIX:-v1}
volumes:
- ./chatmap-ui:/app
- ./deploy/frontend/config.tpl.json:/app/public/config.tpl.json
- /app/node_modules
networks:
- chatmap_net
# Backend API with uvicorn hot reload
chatmap-api:
build: ./chatmap-api/
ports:
- "8000:8000"
depends_on:
- chatmap-redis
- chatmap-db
- chatmap-hanko
environment:
- REDIS_HOST=chatmap-redis
- REDIS_PORT=6379
- SERVER_URL=http://chatmap-go:8001
- CHATMAP_API_DEBUG=true
- CHATMAP_ENC_KEY=0123456789ABCDEF0123456789ABCDEF
- CHATMAP_SECRET_KEY=4sup3rs3cret5up3rdummykey
- CHATMAP_DB_HOST=chatmap-db
- CHATMAP_DB=chatmap
- CHATMAP_DB_USER=admin
- CHATMAP_DB_PASSWORD=0123456789ABCDEF0123456789ABCDEF
- CHATMAP_ACCESS_TOKEN_EXPIRE_MINUTES=${CHATMAP_ACCESS_TOKEN_EXPIRE_MINUTES:-120}
- CHATMAP_EXPIRING_MIN=${CHATMAP_EXPIRING_MIN:-30}
- CHATMAP_CORS_ORIGINS=${CHATMAP_CORS_ORIGINS:-localhost,127.0.0.1,http://localhost:5173}
- CHATMAP_DISABLE_STREAM_CLEANUP=${CHATMAP_DISABLE_STREAM_CLEANUP:-false}
- HANKO_API_URL=http://chatmap-hanko:8002
- JWT_ISSUER=http://localhost:8002
- COOKIE_SECRET=dev-secret-key-min-32-bytes-long!
volumes:
- ./chatmap-api:/app
- ./media:/app/media:rw
networks:
- chatmap_net
# Chatmap migrations
chatmap-api-migrate:
build: ./chatmap-api/
command: uv run alembic upgrade head
depends_on:
- chatmap-db
networks:
- chatmap_net
environment:
- CHATMAP_DB_HOST=chatmap-db
- CHATMAP_DB=chatmap
- CHATMAP_DB_USER=admin
- CHATMAP_DB_PASSWORD=0123456789ABCDEF0123456789ABCDEF
chatmap-go:
image: golang:1.25.3
working_dir: /app
command: sh -c "apt-get update && apt-get install -y git && go mod download && go run main.go"
environment:
- REDIS_HOST=chatmap-redis
- REDIS_PORT=6379
- CHATMAP_ENC_KEY=${CHATMAP_ENC_KEY:-0123456789ABCDEF0123456789ABCDEF}
ports:
- "8001:8001"
volumes:
- ./sessions:/app/sessions
- ./chatmap-im-connector:/app
networks:
- chatmap_net
# Redis
chatmap-redis:
image: redis:latest
ports:
- "6380:6379"
networks:
- chatmap_net
# ChatMap Database
chatmap-db:
image: postgis/postgis:14-3.5-alpine
restart: unless-stopped
environment:
- POSTGRES_DB=chatmap
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=0123456789ABCDEF0123456789ABCDEF
volumes:
- chatmap_data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- chatmap_net
# MailHog for capturing emails in dev
chatmap-mailhog:
image: mailhog/mailhog:latest
ports:
- "1025:1025" # SMTP
- "8025:8025" # Web UI
networks:
- chatmap_net
# Serves as S3 backend
chatmap-minio:
image: quay.io/minio/minio
volumes:
- minio_data:/data
command: server /data --console-address ":9001"
ports:
- 9000:9000
- 9001:9001
networks:
- chatmap_net
# Process Hanko config template with environment variables
chatmap-hanko-config:
image: alpine:latest
command: sh -c "apk add --no-cache gettext && envsubst < /deploy/auth/hanko-config.tpl.yaml > /config-out/hanko-config.yaml && cat /config-out/hanko-config.yaml"
environment:
- GOOGLE_ENABLED=${GOOGLE_ENABLED:-false}
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-placeholder}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET:-placeholder}
# SMTP config for MailHog
- SMTP_ENABLED=true
- SMTP_HOST=chatmap-mailhog
- SMTP_PORT=1025
- SMTP_USER=
- SMTP_PASSWORD=
- SMTP_FROM_ADDRESS=noreply@chatmap.local
volumes:
- ./deploy/auth/hanko-config.tpl.yaml:/deploy/auth/hanko-config.tpl.yaml:ro
- hanko_config:/config-out
depends_on:
- chatmap-mailhog
networks:
- chatmap_net
# Hanko Migrations (runs once before server starts)
chatmap-hanko-migrate:
image: ghcr.io/teamhanko/hanko:v2.1.0
command: migrate up --config /deploy/auth/hanko-config.yaml
volumes:
- hanko_config:/deploy/auth:ro
depends_on:
chatmap-hanko-config:
condition: service_completed_successfully
chatmap-hanko-db:
condition: service_healthy
networks:
- chatmap_net
# Hanko Auth
chatmap-hanko:
image: ghcr.io/teamhanko/hanko:v2.1.0
restart: unless-stopped
command: serve --config /deploy/auth/hanko-config.yaml all
ports:
- "8002:8002"
volumes:
- hanko_config:/deploy/auth:ro
depends_on:
chatmap-hanko-migrate:
condition: service_completed_successfully
chatmap-hanko-db:
condition: service_healthy
networks:
- chatmap_net
# Hanko Database
chatmap-hanko-db:
image: postgres:16-alpine
restart: unless-stopped
environment:
- POSTGRES_USER=hanko
- POSTGRES_PASSWORD=hanko
- POSTGRES_DB=hanko
volumes:
- hanko_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U hanko -d hanko"]
interval: 5s
timeout: 5s
retries: 5
networks:
- chatmap_net
networks:
chatmap_net:
volumes:
chatmap_data:
hanko_data:
hanko_config:
minio_data: