docker 에 대한 설명과 kafka 에 대한 설명은 아래 참고 포스팅 참고 바란다.
1. 도커 명령어로 kafka 이미지 받아오기
-kafka 는 테스트를 하기 위해서는 zookeeper 도 필요하기에 두개의 이미지를 받아오고 둘다 띄워야한다.
https://hub.docker.com/r/bitnami/kafka
https://hub.docker.com/r/bitnami/zookeeper
2. 도커를 띄우기 위한 docker-compose.yml 파일 생성
version: "2" services: zookeeper: container_name: zookeeper image: docker.io/bitnami/zookeeper:3.8 ports: - "2181:2181" volumes: - "zookeeper_data:/bitnami" environment: - ALLOW_ANONYMOUS_LOGIN=yes kafka: hostname: kafka container_name: kafka image: docker.io/bitnami/kafka:3.4 ports: - "9092:9092" volumes: - "kafka_data:/bitnami" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 depends_on: - zookeeper volumes: zookeeper_data: driver: local kafka_data: driver: local |
3. docker-compose up -d 명령어 수행
4. 두개의 터미널 띄워서 하나는 producer / 하나는 consumer 역할 띄우기.
- docker exec -it kafka /bin/bash
명령어를 사용하여 도커 내 카프카에 진입한다.
5. kafka내에서도 여러개의 공간을 만들수 있는데 이걸 topic 이라고 한다.
사용할 토픽을 만든다.
kafka-topics.sh --bootstrap-server localhost:9092 --create --topic kafkatest --partitions 1 --replication-factor 1
6. 이제 4번에서 띄운 2개의 터미널에서 각각 하나는 producer 역할을 하나는 consumer 역할을 수행할 명령어를 날린다.
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic kafkatest
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafkatest
7. 그럼 아래 그림과 같이 두개의 터미널에서 쉘이 다음과 같고 producer에서 메세지를 날리면 consumer에서 메세지를 받는다.
참고로 위 yml 에서 kafka.hostname 부분이 있는데, 디폴트로 설정하면 자동으로 이름이 붙지만
스프링 등에서 listener consumer project 로 사용하려면 hostname 을 지정해줘야하기에 붙여줬다.
그리고 나서 hosts 파일을 수정하여 url 주소를 매핑하였다.
hosts파일 관련해서는 아래 참고 포스팅 참고 바란다.
그리고 만약 ui 에서 카프카를 확인하고 싶다면
https://hub.docker.com/r/provectuslabs/kafka-ui
해당 이미지를 받은 후
docker-compose.yml파일에 service부분에
kafka-ui: image: provectuslabs/kafka-ui container_name: kafka-ui ports: - "8989:8080" restart: always environment: - KAFKA_CLUSTERS_0_NAME=kafka - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092 - KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181 |
를 추가해주고 docker-compose up 을 하면
localhost:8989 로 접근 가능하다.
참고 포스팅
https://thenicesj.tistory.com/88
https://thenicesj.tistory.com/259
https://thenicesj.tistory.com/684
'IT > Docker.K8S' 카테고리의 다른 글
docker-compose (50) | 2023.10.03 |
---|---|
PV, PVC (Persistent Volume Claim) (50) | 2023.09.23 |
[Docker] Redis (45) | 2023.09.07 |
도커 명령어 정리 (56) | 2023.09.06 |
docker 실습 part.4 (22) | 2022.04.09 |
댓글