1- version : ' 3'
2-
31services :
4- # 1. Kafka (KRaft Mode - No Zookeeper required)
52 kafka :
6- image : confluentinc/cp-kafka:7.6.1 # Pinned for stability
3+ image : confluentinc/cp-kafka:7.6.1
74 hostname : kafka
85 container_name : logstream-kafka
96 ports :
@@ -18,16 +15,13 @@ services:
1815 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR : 1
1916 KAFKA_JMX_PORT : 9101
2017 KAFKA_JMX_HOSTNAME : localhost
21- # KRaft Specific Settings
2218 KAFKA_PROCESS_ROLES : ' broker,controller'
2319 KAFKA_CONTROLLER_QUORUM_VOTERS : ' 1@kafka:29093'
2420 KAFKA_LISTENERS : ' PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
2521 KAFKA_INTER_BROKER_LISTENER_NAME : ' PLAINTEXT'
2622 KAFKA_CONTROLLER_LISTENER_NAMES : ' CONTROLLER'
27- # Using a static Cluster ID to avoid "format" errors on startup
2823 CLUSTER_ID : ' MkU3OEVBNTcwNTJENDM2Qk'
2924
30- # 2. ClickHouse (The Database)
3125 clickhouse :
3226 image : clickhouse/clickhouse-server
3327 container_name : logstream-clickhouse
@@ -41,4 +35,31 @@ services:
4135 environment :
4236 - CLICKHOUSE_USER=default
4337 - CLICKHOUSE_PASSWORD=password
44- - CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
38+ - CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
39+
40+ api :
41+ build : ./api
42+ container_name : logstream-api
43+ command : npx tsx server.ts
44+ ports :
45+ - " 3000:3000"
46+ depends_on :
47+ - kafka
48+ - clickhouse
49+ environment :
50+ - PORT=3000
51+ - KAFKA_BROKER=kafka:29092
52+ - CLICKHOUSE_HOST=http://clickhouse:8123
53+ - CLICKHOUSE_PASSWORD=password
54+
55+ worker :
56+ build : ./api
57+ container_name : logstream-worker
58+ command : npx tsx worker/index.ts
59+ depends_on :
60+ - kafka
61+ - clickhouse
62+ environment :
63+ - KAFKA_BROKER=kafka:29092
64+ - CLICKHOUSE_HOST=http://clickhouse:8123
65+ - CLICKHOUSE_PASSWORD=password
0 commit comments