-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
194 lines (182 loc) · 4.68 KB
/
docker-compose.yml
File metadata and controls
194 lines (182 loc) · 4.68 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
version: '3.8'
services:
# 1. PostgreSQL Database (port 5432)
postgres:
image: postgres:15-alpine
container_name: hexfeed-postgres
environment:
POSTGRES_DB: hexfeed_db
POSTGRES_USER: hexfeed_user
POSTGRES_PASSWORD: hexfeed_password
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./init-scripts:/docker-entrypoint-initdb.d
networks:
- hexfeed-network
restart: unless-stopped
# 2. Redis Cache (port 6379)
redis:
image: redis:7-alpine
container_name: hexfeed-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- hexfeed-network
restart: unless-stopped
command: redis-server --appendonly yes
# 3. Cassandra (port 9042) - Optional for now
cassandra:
image: cassandra:4.1
container_name: hexfeed-cassandra
ports:
- "9042:9042"
environment:
CASSANDRA_CLUSTER_NAME: hexfeed_cluster
CASSANDRA_DC: datacenter1
CASSANDRA_RACK: rack1
CASSANDRA_ENDPOINT_SNITCH: GossipingPropertyFileSnitch
CASSANDRA_NUM_TOKENS: 128
volumes:
- cassandra_data:/var/lib/cassandra
networks:
- hexfeed-network
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "cqlsh -e 'describe cluster'"]
interval: 30s
timeout: 10s
retries: 5
# 4. Zookeeper for Kafka (port 2181)
zookeeper:
image: confluentinc/cp-zookeeper:7.4.0
container_name: hexfeed-zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- "2181:2181"
networks:
- hexfeed-network
restart: unless-stopped
# 4. Kafka (port 9092)
kafka:
image: confluentinc/cp-kafka:7.4.0
container_name: hexfeed-kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
volumes:
- kafka_data:/var/lib/kafka/data
networks:
- hexfeed-network
restart: unless-stopped
# 5. Prometheus (port 9090)
prometheus:
image: prom/prometheus:latest
container_name: hexfeed-prometheus
ports:
- "9090:9090"
volumes:
- ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
networks:
- hexfeed-network
restart: unless-stopped
# 6. Grafana (port 3000)
grafana:
image: grafana/grafana:latest
container_name: hexfeed-grafana
ports:
- "3000:3000"
environment:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: admin123
GF_USERS_ALLOW_SIGN_UP: false
volumes:
- grafana_data:/var/lib/grafana
- ./monitoring/grafana/provisioning:/etc/grafana/provisioning
networks:
- hexfeed-network
restart: unless-stopped
depends_on:
- prometheus
# Optional: Management UIs for Development
kafka-ui:
image: provectuslabs/kafka-ui:latest
container_name: hexfeed-kafka-ui
depends_on:
- kafka
ports:
- "8081:8080"
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
networks:
- hexfeed-network
restart: unless-stopped
redis-commander:
image: rediscommander/redis-commander:latest
container_name: hexfeed-redis-commander
depends_on:
- redis
ports:
- "8082:8081"
environment:
REDIS_HOSTS: local:redis:6379
networks:
- hexfeed-network
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4:latest
container_name: hexfeed-pgadmin
depends_on:
- postgres
ports:
- "8083:80"
environment:
PGADMIN_DEFAULT_EMAIL: admin@hexfeed.com
PGADMIN_DEFAULT_PASSWORD: admin123
volumes:
- pgadmin_data:/var/lib/pgadmin
networks:
- hexfeed-network
restart: unless-stopped
# Named volumes for data persistence
volumes:
postgres_data:
driver: local
redis_data:
driver: local
cassandra_data:
driver: local
kafka_data:
driver: local
prometheus_data:
driver: local
grafana_data:
driver: local
pgadmin_data:
driver: local
# Custom network
networks:
hexfeed-network:
driver: bridge