DEV Community

Cover image for Docker Compose - Kafka simples
Alexandre Fernandes dos Santos
Alexandre Fernandes dos Santos

Posted on • Edited on

Docker Compose - Kafka simples

Olá, meu pessoal bom de papo! Tudo bão? 😄

Vim aqui compartilhar um script que aprendi enquanto fazia um trabalho da faculdade usando Kafka e Python. Quem sabe mais pra frente eu não faço outro artigo mostrando como conectei e criei os consumers e producers em Python?

A ideia é manter o script o mais simples possível, já que a maioria dos exemplos que encontrei eram um pouco complicados e traziam ferramentas das quais eu não precisava.

Na versão final deixei apenas o Zookeeper (usado pelo Kafka para coordenar os serviços), o Kafka em si e uma dashboard para visualizar o que está acontecendo — o que ajuda muito!

A dashboard pode ser acessada pelo navegador em localhost:8080.

🐳 Docker Compose

version: '3'
services:
  zookeeper:
      image: confluentinc/cp-zookeeper:latest
          environment:
                ZOOKEEPER_CLIENT_PORT: 2181
                      ZOOKEEPER_TICK_TIME: 2000
                          ports:
                                - 2181:2181

                                    kafka:
                                        image: confluentinc/cp-kafka:latest
                                            depends_on:
                                                  - zookeeper
                                                      ports:
                                                            - 29092:29092
                                                                environment:
                                                                      KAFKA_BROKER_ID: 1
                                                                            KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
                                                                                  KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
                                                                                        KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
                                                                                              KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
                                                                                                    KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

                                                                                                      kafka-ui:
                                                                                                          image: provectuslabs/kafka-ui
                                                                                                              container_name: kafka-ui
                                                                                                                  ports:
                                                                                                                        - "8080:8080"
                                                                                                                            restart: always
                                                                                                                                environment:
                                                                                                                                      - KAFKA_CLUSTERS_0_NAME=local
                                                                                                                                            - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
                                                                                                                                                  - KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
Enter fullscreen mode Exit fullscreen mode

🧭 Algumas observações ❗

  • O Kafka está exposto na porta 29092, então, ao conectar, use localhost:29092.
  • Se fizer alguma modificação, verifique se as conexões entre os serviços continuam funcionando. Por exemplo: se mudar a porta do Kafka, será necessário atualizar o valor tanto no kafka-ui quanto no zookeeper.

E por hoje é só, pessoal! Tchau! 👋

Top comments (2)

Collapse
 
geovrodri profile image
Geovany Rodrigues

Me ajudou bastante! 👏 👏

Collapse
 
xandecodes profile image
Alexandre Fernandes dos Santos

Vlww mano 😆