Микросервисы в докере не видят кафку в докере
У меня есть docker-compose.yml в котором описаны сервисы которые общаются через кафку и сама кафка Вот driver-service
driver_service:
image: driver-service
container_name: driver-service
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql_db:3306/drivers
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://eureka-service:8090/eureka
- SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:29092
- KAFKA_BOOTSTRAP_SERVERS=kafka:29092
ports:
- '8084:8084'
networks:
- cab_aggregator
depends_on:
- eureka-service
- mysql_db
- kafka
Вот ride-service
ride_service:
image: ride-service
container_name: ride-service
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql_db:3306/rides
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=root
- EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://eureka-service:8090/eureka
- SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka:29092
- KAFKA_BOOTSTRAP_SERVERS=kafka:29092
ports:
- '8082:8082'
networks:
- cab_aggregator
depends_on:
- eureka-service
- mysql_db
- kafka
Вот кафка с zookeper
zookeeper:
image: zookeeper:3.7.0
container_name: zookeeper
networks:
- cab_aggregator
restart: "no"
ports:
- "2181:2181"
kafka:
image: obsidiandynamics/kafka
container_name: kafka
restart: "no"
networks:
- cab_aggregator
ports:
- "9092:9092"
environment:
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: DOCKER_INTERNAL:PLAINTEXT,DOCKER_EXTERNAL:PLAINTEXT
KAFKA_LISTENERS: DOCKER_INTERNAL://:29092,DOCKER_EXTERNAL://:9092
KAFKA_ADVERTISED_LISTENERS: DOCKER_INTERNAL://kafka:29092,DOCKER_EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092
KAFKA_INTER_BROKER_LISTENER_NAME: DOCKER_INTERNAL
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
depends_on:
- zookeeper
kafdrop:
image: obsidiandynamics/kafdrop
container_name: kafdrop
restart: "no"
networks:
- cab_aggregator
ports:
- "9000:9000"
environment:
KAFKA_BROKERCONNECT: "kafka:29092"
depends_on:
- "kafka"
И при старте в логах сервисов выдается ошибка
rg.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater [WARN ] 19:10:19 - [Consumer clientId=consumer-ride-creation-group-1, groupId=ride-creation-group] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected
2024-02-17T19:10:20.622588304Z org.apache.kafka.clients.NetworkClient [INFO ] 19:10:20 - [Consumer clientId=consumer-ride-creation-group-1, groupId=ride-creation-group] Node -1 disconnected.
2024-02-17T19:10:20.622669266Z org.apache.kafka.clients.NetworkClient [WARN ] 19:10:20 - [Consumer clientId=consumer-ride-creation-group-1, groupId=ride-creation-group] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
2024-02-17T19:10:20.622859991Z org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater [WARN ] 19:10:20 - [Consumer clientId=consumer-ride-creation-group-1, groupId=ride-creation-group] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected
Так же вот настройки самого сервиса джарник которого запускается в докер компосе
spring:
datasource:
url: jdbc:mysql://localhost:3306/rides
username: ${DB_USERNAME:root}
password: ${DB_PASSWORD:root}
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
show-sql: true
hibernate:
ddl-auto: none
liquibase:
change-log: classpath:/db/changelog/db.changelog-master.xml
application:
name: ride
kafka:
consumer:
group-id: driver-creation-group
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
bootstrap-servers: localhost:9092
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
bootstrap-servers: localhost:9092
topic:
name:
ride: ride
driver: driver
available: available
service:
passenger:
name: passenger
path: /api/v1/passengers
driver:
name: driver
path: /api/v1/drivers
payment:
name: payment
path: /api/v1/payment
eureka:
client:
service-url:
defaultZone: http://localhost:8090/eureka
logging:
pattern:
console: "%C{1.} [%-5level] %d{HH:mm:ss} - %msg%n"
server:
port: 8082
Как мне кажется проблема с портами Причем если без докера запустить сервис то кафка доступна сервису так как там порты прокидываются