services:
zookeeper:
image: bitnami/zookeeper:latest
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: bitnami/kafka:latest
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
- KAFKA_CFG_LISTENERS=CLIENT://:9333,EXTERNAL://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9333,EXTERNAL://localhost:9092
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
depends_on:
- zookeeper
kafdrop:
image: obsidiandynamics/kafdrop:latest
ports:
- '9000:9000'
environment:
KAFKA_BROKERCONNECT: "PLAINTEXT://kafka:9333"
JVM_OPTS: "-Xms320M -Xmx640M -XX:-TieredCompilation -XX:+UseStringDeduplication -noverify"
SERVER_PORT: 9000
MANAGEMENT_SERVER_PORT: 9000
depends_on:
- kafka
로컬 테스트를 위해 zookeeper + kafka 컨테이너 띄운 docker-compose 환경을 구성해야 했는데, 찾아보니 kafka 이미지가 꽤 많습니다.
공식 이미지는 따로 없고, wurstmeister/kafka, confluentinc/cp-kafka, bitnami/kafka 등의 비공식 이미지들이 있는데요 저는 bitnami 이미지로 선택했습니다. 이유는 bitnami 이미지가 예제도 많고 관리도 잘 되고 있는듯 해서 골랐습니다.
참고로 bitnami에서 제공하는 이미지들은 깃허브 bitnami/containers에서 확인할 수 있습니다
kafdrop은 카프카 클러스터 상태를 웹으로 볼 수 있는 모듈인데, consumer lag 같은거 확인할 때 쓸만해서 docker compose에 추가했습니다.
띄우는건 docker compose up -d, 내리는건 docker compose down 으로 하면 됩니다
단점이 좀 있는데 kafka가 좀 늦게 켜지면 kafdrop이랑 kafka 커넥션이 안맺어지는 것 같네요 ;;
healthcheck 엔드포인트가 뚫려있는지 확인해보고 나중에 추가해봐야겠습니다. 지금은 뭐 로컬이면 다시 띄우면 그만이니 패스!
반응형
'Infra > docker' 카테고리의 다른 글
[docker] compose 포트 겹치는 문제 (0) | 2022.11.10 |
---|---|
[Docker] buildx를 이용한 레이어 캐싱 + Github Actions (0) | 2021.09.04 |
[Docker] 이미지 크기 최적화 (0) | 2021.04.24 |
MacOS docker 자동완성 설정하기 (zsh, oh-my-zsh) (1) | 2020.12.26 |