여기 저기에 카프카를 띄울 때 마다, wget 해서 환경 변수 설정하고, 설정바꾸고, 엄청 번거로웠다.
마침 오라클 클라우드를 사용하다가 뭔가 자꾸 막혀서 도커를 사용해보았더니, 정말 엄청 편리했다.
나의 설정 같은 경우 1MB 메모리를 가진 저렴한 서버에 띄우다 보니 저 JVM 메모리 설정이 들어갔는데, 넉넉한 상황에서는 저걸 빼도 된다.
저기에 있는 마운트를 다 연결해야, 추후 docker-compose down으로 다 삭제한 다음 다시 실행시켜도, 데이터가 유지된다.
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 5
ZOOKEEPER_SYNC_LIMIT: 2
volumes:
- "/home/ubuntu/zookeeper/data:/var/lib/zookeeper/data"
- "/home/ubuntu/zookeeper/secrets:/var/lib/zookeeper/secrets"
- "/home/ubuntu/zookeeper/log:/var/lib/zookeeper/log"
ports:
- "22181:2181"
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- "29092:29092"
volumes:
- "/home/ubuntu/kafka/data:/var/lib/kafka/data"
- "/home/ubuntu/kafka/secrets:/var/lib/kafka/secrets"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://{}:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_HEAP_OPTS: "-Xmx400m -Xms400m"