docker-compose.yaml 에 아래와 같이 작성해준다.
여기서는 wurstmeister/kafka:2.13-2.7.0 이미지를 이용하여 kafka 를 실행한다.
지금은 2.1.3-2.8.0 까지 나왔지만, 도커 이미지가 대응되지 않았다.
version: "3.8"
services:
zookeeper:
image: wurstmeister/zookeeper:3.4.6
container_name: zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:2.13-2.7.0
container_name: kafka
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: "MC:1:1"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "9092:9092"
depends_on:
- zookeeper
이후, yaml 을 작성한 디렉토리에서 아래의 명령어를 입력해 준다.
docker-compose up -d
정상적으로 실행중인 것을 확인 해볼 수 있다.
KAFKA_CREATE_TOPICS: 으로 토픽의 이름, Partition의 개수, Replica의 개수를 정할 수 있다.
저 상태로 외부에서 접속을 하려면 9092 포트를 열어주면 client 는 broker 에서 막히게 된다.
그래서, localhost 라고 표시된 ADVERTISED 부분 두개를 본인의 외부 아이피 주소를 넣어준 뒤 docer 를 실행하게 되면
외부에서도 정상적으로 사용할 수 있는 카프카 서버가 된다.
반응형