@@ -133,6 +133,60 @@ services:
133133 - ../edx-e2e-tests/upload_files:/edx/app/e2e/edx-e2e-tests/upload_files
134134 - ../edx-platform/common/test/data:/edx/app/edxapp/edx-platform/common/test/data
135135
136+ # Events broker
137+ kafka :
138+ image : confluentinc/cp-server:6.2.1
139+ hostname : kafka.devstack.edx
140+ container_name : " edx.${COMPOSE_PROJECT_NAME:-devstack}.kafka"
141+ depends_on :
142+ - zookeeper
143+ ports :
144+ - " 9092:9092"
145+ - " 9101:9101"
146+ environment :
147+ KAFKA_BROKER_ID : 1
148+ KAFKA_ZOOKEEPER_CONNECT : ' edx.devstack.zookeeper:2181'
149+ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP : PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
150+ KAFKA_ADVERTISED_LISTENERS : PLAINTEXT://edx.devstack.kafka:29092,PLAINTEXT_HOST://localhost:9092
151+ KAFKA_METRIC_REPORTERS : io.confluent.metrics.reporter.ConfluentMetricsReporter
152+ KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR : 1
153+ KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS : 0
154+ KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR : 1
155+ KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR : 1
156+ KAFKA_TRANSACTION_STATE_LOG_MIN_ISR : 1
157+ KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR : 1
158+ KAFKA_JMX_PORT : 9101
159+ KAFKA_JMX_HOSTNAME : localhost
160+ KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL : http://edx.devstack.schema-registry:8081
161+ CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS : edx.devstack.kafka:29092
162+ CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS : 1
163+ CONFLUENT_METRICS_ENABLE : ' true'
164+ CONFLUENT_SUPPORT_CUSTOMER_ID : ' anonymous'
165+ networks :
166+ default :
167+ aliases :
168+ - edx.devstack.kafka
169+
170+ # RESTful interface to the Kafka cluster
171+ kafka-rest-proxy :
172+ image : confluentinc/cp-kafka-rest:6.2.1
173+ depends_on :
174+ - kafka
175+ - schema-registry
176+ ports :
177+ - 8082:8082
178+ hostname : kafka-rest-proxy.devstack.edx
179+ container_name : " edx.${COMPOSE_PROJECT_NAME:-devstack}.kafka-rest-proxy"
180+ environment :
181+ KAFKA_REST_HOST_NAME : edx.devstack.kafka-rest-proxy
182+ KAFKA_REST_BOOTSTRAP_SERVERS : ' edx.devstack.kafka:29092'
183+ KAFKA_REST_LISTENERS : " http://0.0.0.0:8082"
184+ KAFKA_REST_SCHEMA_REGISTRY_URL : ' http://edx.devstack.schema-registry:8081'
185+ networks :
186+ default :
187+ aliases :
188+ - edx.devstack.kafka-rest-proxy
189+
136190 memcached :
137191 container_name : " edx.${COMPOSE_PROJECT_NAME:-devstack}.memcached"
138192 hostname : memcached.devstack.edx
@@ -188,6 +242,40 @@ services:
188242 aliases :
189243 - edx.devstack.redis
190244
245+ # storage layer for data schemas in Kafka
246+ schema-registry :
247+ image : confluentinc/cp-schema-registry:6.2.1
248+ hostname : schema-registry.devstack.edx
249+ container_name : " edx.${COMPOSE_PROJECT_NAME:-devstack}.schema-registry"
250+ depends_on :
251+ - kafka
252+ ports :
253+ - " 8081:8081"
254+ environment :
255+ SCHEMA_REGISTRY_HOST_NAME : schema-registry.devstack.edx
256+ SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS : ' edx.devstack.kafka:29092'
257+ SCHEMA_REGISTRY_LISTENERS : http://0.0.0.0:8081
258+ networks :
259+ default :
260+ aliases :
261+ - edx.devstack.schema-registry
262+
263+ # needed by Kafka to keep track of nodes, topics, and messages.
264+ zookeeper :
265+ image : confluentinc/cp-zookeeper:6.2.1
266+ hostname : zookeeper.devstack.edx
267+ container_name : " edx.${COMPOSE_PROJECT_NAME:-devstack}.zookeeper"
268+ ports :
269+ - " 2181:2181"
270+ environment :
271+ ZOOKEEPER_CLIENT_PORT : 2181
272+ ZOOKEEPER_TICK_TIME : 2000
273+ networks :
274+ default :
275+ aliases :
276+ - edx.devstack.zookeeper
277+
278+
191279 # ================================================
192280 # edX services
193281 # ================================================
0 commit comments