I'm running on mac m1. This is my docker-compose file:
version: '2'
networks:
kafkanet:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
services:
zookeeper:
image: 'bitnami/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
networks:
- kafkanet
kafka:
image: 'bitnami/kafka:latest'
networks:
kafkanet:
ipv4_address: 172.20.128.2
ports:
- '9093:9093'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://localhost:9093
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
depends_on:
- zookeeper
spring_boot:
image: 'springapp'
networks:
- kafkanet
depends_on:
- kafka
- zookeeper
myapp:
image: 'goapp:stable'
networks:
- kafkanet
environment:
- KAFKA_BROKERS=172.20.128.2:9092
ports:
- '8080:8080'
The goapp is built by running docker build . --platform linux/amd64. In the Dockerfile, I set
ENV KAFKA_BROKERS=kafka:9092
ENV KAFKA_ANALYTICS_TOPIC=mykafkatopic
Now, the spring-boot app works fine, it can produce message to kafka and consume message from kafka. But the goapp shows the following error when I check it on docker dashboard.
%3|1653633738.400|FAIL|rdkafka#producer-1| [thrd:172.20.128.2:9092/bootstrap]: 172.20.128.2:9092/bootstrap: Connect to ipv4#172.20.128.2:9092 failed: Connection refused (after 1053ms in state CONNECT)
%3|1653633739.342|FAIL|rdkafka#producer-1| [thrd:172.20.128.2:9092/bootstrap]: 172.20.128.2:9092/bootstrap: Connect to ipv4#172.20.128.2:9092 failed: Connection refused (after 0ms in state CONNECT, 1 identical error(s) suppressed)
Update: I tried to change the dockerfile to
ENV KAFKA_BROKERS=172.80.128.2:9092
ENV KAFKA_ANALYTICS_TOPIC=mykafkatopic
still getting the same error.