|
1 | 1 | # https://github.com/conduktor/kafka-stack-docker-compose |
2 | 2 | --- |
3 | | -version: '2.1' |
4 | | - |
5 | 3 | services: |
6 | 4 | zoo1: |
7 | | - image: confluentinc/cp-zookeeper:7.3.2 |
| 5 | + image: confluentinc/cp-zookeeper:7.5.3 |
8 | 6 | hostname: zoo1 |
9 | 7 | container_name: zoo1 |
10 | 8 | ports: |
11 | | - - "2181:2181" |
| 9 | + - "127.0.0.1:2181:2181" |
12 | 10 | environment: |
13 | 11 | ZOOKEEPER_CLIENT_PORT: 2181 |
14 | 12 | ZOOKEEPER_SERVER_ID: 1 |
15 | 13 | ZOOKEEPER_SERVERS: zoo1:2888:3888 |
| 14 | + healthcheck: |
| 15 | + test: ["CMD-SHELL", "echo ruok | nc -w 2 localhost 2181 | grep imok"] |
| 16 | + interval: 5s |
| 17 | + timeout: 5s |
| 18 | + retries: 24 |
16 | 19 |
|
17 | 20 | kafka1: |
18 | | - image: confluentinc/cp-kafka:7.3.2 |
| 21 | + image: confluentinc/cp-kafka:7.5.3 |
19 | 22 | hostname: kafka1 |
20 | 23 | container_name: kafka1 |
21 | 24 | ports: |
22 | | - - "9092:9092" |
23 | | - - "29092:29092" |
24 | | - - "9999:9999" |
| 25 | + - "127.0.0.1:9092:9092" |
25 | 26 | environment: |
26 | | - KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:19092,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092,DOCKER://host.docker.internal:29092 |
27 | | - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT |
| 27 | + KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:19092,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092 |
| 28 | + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT |
28 | 29 | KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL |
29 | 30 | KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181" |
30 | 31 | KAFKA_BROKER_ID: 1 |
31 | 32 | KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO" |
32 | 33 | KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 |
33 | 34 | KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 |
34 | 35 | KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 |
35 | | - KAFKA_JMX_PORT: 9999 |
36 | | - KAFKA_JMX_HOSTNAME: ${DOCKER_HOST_IP:-127.0.0.1} |
37 | | - KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer |
38 | | - KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true" |
| 36 | + # Consumer groups are created per-run, so skip the 3s default rebalance debounce |
| 37 | + KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 |
| 38 | + # Tests create their topics explicitly; test_invalid_topic depends on this being off |
| 39 | + KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" |
| 40 | + healthcheck: |
| 41 | + test: ["CMD-SHELL", "kafka-broker-api-versions --bootstrap-server localhost:9092"] |
| 42 | + interval: 5s |
| 43 | + timeout: 10s |
| 44 | + retries: 24 |
39 | 45 | depends_on: |
40 | | - - zoo1 |
| 46 | + zoo1: |
| 47 | + condition: service_healthy |
0 commit comments