1services:
2 zookeeper:
3 image: confluentinc/cp-zookeeper:7.6.0
4 hostname: zookeeper
5 container_name: zookeeper
6 ports:
7 - "2181:2181"
8 environment:
9 ZOOKEEPER_CLIENT_PORT: 2181
10 ZOOKEEPER_TICK_TIME: 2000
11 volumes:
12 - zookeeper-data:/var/lib/zookeeper/data
13 - zookeeper-logs:/var/lib/zookeeper/log
14
15 kafka:
16 image: confluentinc/cp-kafka:7.6.0
17 hostname: kafka
18 container_name: kafka
19 depends_on:
20 - zookeeper
21 ports:
22 - "9092:9092"
23 - "9101:9101"
24 environment:
25 KAFKA_BROKER_ID: 1
26 KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
27 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
28 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
29 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
30 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
31 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
32 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
33 KAFKA_JMX_PORT: 9101
34 KAFKA_JMX_HOSTNAME: localhost
35 KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
36 healthcheck:
37 test:
38 [
39 "CMD",
40 "bash",
41 "-c",
42 "kafka-topics --bootstrap-server kafka:29092 --list",
43 ]
44 volumes:
45 - kafka-data:/var/lib/kafka/data
46
47
48 tap:
49 image: ghcr.io/bluesky-social/indigo/tap:latest
50 hostname: tap
51 container_name: tap
52 depends_on:
53 kafka:
54 condition: service_healthy
55 ports:
56 - "2480:2480"
57 - "6010:6010"
58 environment:
59 TAP_BIND: ":2480"
60 TAP_FULL_NETWORK: true
61 TAP_DISABLE_ACKS: false
62 TAP_COLLECTION_FILTERS: "app.bsky.graph.follow"
63 TAP_METRICS_LISTEN: ":6010"
64 volumes:
65 - tap-data:/data
66
67 atkafka:
68 build:
69 context: .
70 dockerfile: Dockerfile
71 container_name: atkafka
72 depends_on:
73 - kafka
74 - tap
75 ports:
76 # metrics port
77 - "6009:6009"
78 command: ["firehose", "tap"]
79 environment:
80 ATKAFKA_TAP_HOST: "ws://tap:2480"
81 ATKAFKA_DISABLE_ACKS: false
82 ATKAFKA_BOOTSTRAP_SERVERS: "kafka:29092"
83 ATKAFKA_OUTPUT_TOPIC: "tap-events"
84
85 restart: unless-stopped
86
87volumes:
88 zookeeper-data:
89 zookeeper-logs:
90 kafka-data:
91 tap-data: