728x90
공식 문서에 나와있는 docker-compose.yml 내용을 그대로 복사붙여넣기하고 추가로 내가 필요한 부분은 더 추가해서 docker-network를 구성하였다 . 내용은 kafka와 zookeeper를 실행시키고 zookeeper를 그대로 연결해서 띄우는거다. 실제로 로컬에서 일일히 띄우기 귀찮았는데 docker를 사용하면 파일 하나만 실행시키면 자동으로 되는게 너무 편하다.
version: '3'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.0.1
container_name: zookeeper
ports:
- "2181:2181"
networks:
- kafka-network # Kafka와 관련된 컨테이너와 같은 네트워크 그룹에 속하도록 설정
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka:
image: confluentinc/cp-kafka:7.0.1
container_name: kafka
ports:
- "9092:9092"
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://kafka:29092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
networks:
- kafka-network # Kafka와 관련된 컨테이너와 같은 네트워크 그룹에 속하도록 설정
- default
kafka-connect:
image: confluentinc/cp-kafka-connect:7.0.1
container_name: kafka-connect
depends_on:
- kafka
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka:29092
CONNECT_REST_PORT: 8083
CONNECT_GROUP_ID: "answer-avro"
CONNECT_CONFIG_STORAGE_TOPIC: "answer-avro-config"
CONNECT_OFFSET_STORAGE_TOPIC: "answer-avro-offsets"
CONNECT_STATUS_STORAGE_TOPIC: "answer-avro-status"
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_KEY_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
CONNECT_VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
CONNECT_INTERNAL_KEY_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
CONNECT_INTERNAL_VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
CONNECT_REST_ADVERTISED_HOST_NAME: "localhost"
CONNECT_LOG4J_ROOT_LOGLEVEL: DEBUG
CONNECT_PLUGIN_PATH: "/usr/share/java,/etc/kafka-connect/jars"
ports:
- "8083:8083"
volumes:
- ./connectors:/etc/kafka-connect/jars
- ./config:/etc/kafka-connect/config
networks:
- kafka-network # Kafka와 관련된 컨테이너와 같은 네트워크 그룹에 속하도록 설정
mysql:
image: mysql:latest
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: 1248
ports:
- "3306:3306"
networks:
- kafka-network # Kafka와 관련된 컨테이너와 같은 네트워크 그룹에 속하도록 설정
networks:
kafka-network:
driver: bridge # 컨테이너를 연결할 커스텀 네트워크 그룹 생성
topic 만들기
docker exec broker kafka-topics --bootstrap-server broker:9092 --create --topic quickstart
topic이 생성되었다.
topic에 메세지를 전달해보자
docker exec -it broker kafka-console-producer --bootstrap-server broker:9092 --topic quickstart
명령어를 입력한 뒤 내가 보내고 싶은 메세지를 전송한다.
Consumer로 메시지 읽기
docker exec -it broker kafka-console-consumer --bootstrap-server broker:9092 --topic quickstart --from-beginning
다음 명령어로 consumer를 실행시켜 메세지를 읽어보자
그러면 내가 보낸 producer 의 내용이 consumer에 잘 나올 것이다.
728x90
'Docker,Jenkins' 카테고리의 다른 글
MSA에서 데이터베이스 값 동기화 및 kafka connect docker compose 구성 (0) | 2023.09.23 |
---|---|
[jenkins] docker build 후 amazon ECR로 이미지 업로드하기 (0) | 2023.07.25 |
JenkinsFile로 pipeline 구축 (1) | 2023.07.11 |
Docker와 springboot,mysql Docker Compose로 올려서 사용하기 (0) | 2023.04.02 |
Container Volume 이란 ? (0) | 2023.03.31 |