728x90
검색하면 예제가 많지만 난 안되서 한참을 헤맸다. 최종적으로 성공한 docker-compose.yaml 은 아래와 같다.
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper:3.4.6
container_name: local-zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:2.13-2.8.1
container_name: local-kafka
ports:
- "9092:9092"
depends_on:
- zookeeper
environment:
KAFKA_ZOOKEEPER_CONNECT: local-zookeeper:2181
KAFKA_ADVERTISED_HOST_NAME: localhost #카프카 프로듀서, 컨슈머에게 노출할 주소. 설정하지 않을 경우 디폴트로 listners 설정이 적용된다.
KAFKA_ADVERTISED_PORT: 9092 #카프카 프로듀서, 컨슈머에게 노출할 주소. 설정하지 않을 경우 디폴트로 listners 설정이 적용된다.
KAFKA_CREATE_TOPICS: "test-topic-1:1:1,test-topic-2:1:1" ##topic명:파티션 개수:복제본 개수
위 파일이 있는 경로로 이동해서 아래 명령어로 컨테이너를 띄우자.
docker-compose up -d
#종료는 아래와 같이 하면 된다.
docker-compose down
#컨테이너가 잘 떳는지 확인하자.
docker ps
생성된 토픽은 컨테이너에 직접 접속해서 확인해도 되지만 로컬에서 아래 명령어로도 확인 가능하다.
docker exec -ti local-kafka /opt/kafka/bin/kafka-topics.sh --list --zookeeper zookeeper
몇가지 참고할 사항은 아래와 같다.
- service.kafka.depends_on 은 지정된 서비스가 확인되면 띄워진다는 의미인데 services 지시어 하위에 생성한 zookeeper 를 명시해야 한다. container_name 을 지정하면 안된다.
- service.kafka.environment 에 명시하는 KAFKA_ZOOKEEPER_CONNECT 는 container_name 을 기준으로 작성해야 한다.
- 토픽이 생성되는 시간이 좀 걸린다. 위에서는 파티션과 복제본을 1씩 했는데도 카프카 구성후 바로 토픽을 확인하면 토픽이 보이지 않았다. 구동후 토픽이 보이지 않는다고 당황하지 말고 좀 기다렸다 다시 확인해보자.
https://blog.voidmainvoid.net/411
https://stackoverflow.com/questions/64783376/how-to-create-a-docker-image-for-kafka-topic
https://parkcheolu.tistory.com/196
https://github.com/wurstmeister/kafka-docker/issues/490
https://www.kua.kr/86
728x90
'Backend > Docker, Kubernetes' 카테고리의 다른 글
ingress 413 Request Entity Too Large (0) | 2022.01.18 |
---|---|
kubectl panic: runtime error: index out of range .. with length .. [recovered] (0) | 2022.01.12 |
Deployment 적용시 ORA-01882: timezone region not found (0) | 2021.09.29 |
ingress https 설정 (0) | 2021.09.02 |
ConfigMap, Secert 갱신 시 pod 자동으로 rollout 하기 (0) | 2021.09.01 |