Simple processing pipeline
[demos/kafka/wordcount] / docker-compose.yml
1 version: '3.2'
2 services:
3   zookeeper:
4     image: confluentinc/cp-zookeeper:6.2.0
5     environment:
6       ZOOKEEPER_CLIENT_PORT: 2181
7     ports:
8       - 2181:2181
9
10   kafka:
11     image: confluentinc/cp-kafka:6.2.0
12     environment:
13       KAFKA_BROKER_ID: 1
14       KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
15       KAFKA_LISTENERS: DOCKER://:9092, LOCALHOST://:9082
16       KAFKA_ADVERTISED_LISTENERS: DOCKER://kafka:9092, LOCALHOST://localhost:9082
17       KAFKA_INTER_BROKER_LISTENER_NAME: DOCKER
18       KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: DOCKER:PLAINTEXT, LOCALHOST:PLAINTEXT
19       KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
20       KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
21     ports:
22       - 9092:9082
23       - 9082:9082
24     depends_on:
25       - zookeeper
26
27   recorder:
28     image: juplo/wordcount--recorder:1.0.0
29     environment:
30       juplo.wordcount.recorder.bootstrap-server: kafka:9092
31       juplo.wordcount.recorder.topic: recordings
32     ports:
33       - 8081:8080
34     depends_on:
35       - kafka
36
37   counter:
38     image: juplo/wordcount--counter:1.0.0
39     environment:
40       juplo.wordcount.counter.bootstrap-server: kafka:9092
41       juplo.wordcount.counter.application-id: counter
42       juplo.wordcount.counter.input-topic: recordings
43       juplo.wordcount.counter.output-topic: countings
44     ports:
45       - 8083:8080
46     depends_on:
47       - kafka
48
49   top10:
50     image: juplo/wordcount--top10:1.0.0
51     environment:
52       juplo.wordcount.top10.bootstrap-server: kafka:9092
53       juplo.wordcount.top10.application-id: top10
54       juplo.wordcount.top10.input-topic: countings
55       juplo.wordcount.top10.output-topic: top10
56     ports:
57       - 8084:8080
58     depends_on:
59       - kafka
60
61   query:
62     image: juplo/wordcount--query:1.0.0
63     environment:
64       juplo.wordcount.query.bootstrap-server: kafka:9092
65       juplo.wordcount.query.application-id: query
66       juplo.wordcount.query.ranking-input-topic: top10
67     ports:
68       - 8085:8080
69     depends_on:
70       - kafka
71
72   cli:
73     image: confluentinc/cp-kafka:6.2.0
74     command: bash -c "
75       cub kafka-ready -b kafka:9092 1 60 ;
76       kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --topic recordings ;
77       kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --topic users ;
78       kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --topic countings ;
79       kafka-topics --bootstrap-server kafka:9092 --create --partitions 10 --topic top10 ;
80       sleep infinity"
81
82   kafkacat:
83     image: confluentinc/cp-kafkacat:6.2.0
84     command: sleep infinity
85
86 networks:
87   default:
88     external:
89       name: trion