티스토리 뷰
이번에는 조금 특별하게 docker-compose를 사용해서 Kafka를 Docker환경에서 실행하려 합니다. 저에 경우에는 CentOS 관련 스터디를 진행할때 docker-compose를 사용해봤었습니다. 사용하면서 느꼈던 점은, 정말 내가 불편하다고 느끼는 것은 이미 전부 구현되어 있구나 라는 생각이 들었습니다. 그래서 제가 느낀점을 바탕으로 간략하게 정리해볼게요!
#docker-compose
🚀 Docker 안에 내재되어있지는 않음, 따로 설치를 해야함
🚀 여러 Container를 일괄적으로 실행 시킬 수 있음
🚀 기존에 Container 실행 시 설정한 -p -e 옵션 등을 미리 yml 파일에 저장해둔 상태로 실행 할 수 있음
위 내용이 compose의 가장 큰 특징이고 사실상 전부입니다. Container를 일괄적으로 실행 시킬 수 있다는 것은 엄청난 장점입니다. 그리고 여기에 더해서 혹시 기억나시나요? 지금 까지 docker run 을 통해서 명령어를 실행할때 엄청 길었던 -e 옵션이나 -p 옵션등을 미리 지정해두고 나중에 따로 작성할 필요없이 파일 형태로 저장해둘 수 있습니다. 정말 편리하고 좋은 기능입니다!
#Git Clone
먼저 git clone 명령어를 통해서 kafka compose 파일을 받으려 합니다. 디렉토리를 하나 만들어 주세요
mkdir kafka-compose
cd kafka-compose
git clone 커맨드를 통해서 해당하는 파일을 받아줍니다.
git clone https://github.com/wurstmeister/kafka-docker.git
정상 동작 시 다음과 같이 성공적으로 clone이 완료되었다는 메시지가 출력됩니다.
해당 폴더로 진입해서, 확인해보면 다음과 같은 구조로 되어있습니다.
모두 docker-compose file이며 저희가 이번 테스트에서는 하나의 브로커를 사용할 예정이기 때문에, Visual Studio 를 활용해서, 해당 yml 파일을 수정하려합니다.
code docker-compose-single-broker.yml
그럼 위와같은 구조로 되어있는 것을 볼 수 있습니다. 다만 수정할 부분이 있어 아래와 같이 수정해줍니다.
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
networks:
my-network:
ipv4_address: 172.18.0.100
kafka:
# build: .
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 172.18.0.101
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- zookeeper
networks:
my-network:
ipv4_address: 172.18.0.101
networks:
my-network:
name: ecommerce-network # 172.18.0.*
수정 부분에 있어서 간단한 정리이니 참고하시면 좋을 것 같습니다. Ports와 Networks 그리고 Environment는 저희가 자주 사용했었습니다! -p -e 등의 옵션으로 말이죠!
맨 하단에 있는 networks는 약간의 부가 설명이 필요할 것 같은데, 위에서 my-network로 묶여있고 ipv4 주소가 172.18.0.100~101 로 되어있습니다. 해당 IP를 활성화시키기 위해서 최초로 ecommerce-network를 활성해 해줍니다.
그리고 아래의 커맨드를 사용해 docker-compose-single-broker 를 실행시켜줍니다. -d 옵션은 백그라운드 모드로 실행 할 수 있도록 도움을 줍니다. 로그를 확인하면서 작업하고 싶다면 아래의 옵션을 주지 않아도 됩니다.
docker-compose -f docker-compose-single-broker.yml up -d
정상 실행 시 다음과 같이 Container가 등록된 것을 볼 수 있습니다.
그리고 저희가 설정한 yml 내용이 정상적으로 적용이 되었는지 확인해볼게요.
network 명령어를 통해서 ecommerce-network에 등록된 서비스를 확인해줍니다.
docker network inspect ecommerce-network
위와 같이 IPv4Address가 정상적으로 100,101번으로되어 있다면, 성공입니다!
#마치며..
이번 시간의 메인은 사실 Kafka 설치가 아닌 Docker-compose를 활용해보고, 왜 사용하는지 이해하는게 목적인거 같습니다. 물론 따로따로 이미지를 하나씩 구축해서 kafka를 사용해도 되지만, Docker-compose를 활용하면 한번에 실행 할 수 있을 뿐만 아니라 환경설정도 미리 해둔 뒤 나중에 새로 입력할 필요 없이 계속 사용할 수 있는 장점이 있습니다.
감사합니다
- Total
- Today
- Yesterday
- config
- 운동일기
- zipkin
- Kafka Connect
- producer
- elasticSearch
- kafka
- LoadBalancer
- springcloud
- 운동
- JWT
- 오늘저녁 삼겹살
- Feign
- UserService
- Gateway
- github
- Logstash 활용
- ACTUATOR
- Logstash to ElasticSearch
- docker
- consumer
- 루틴기록
- prometheus
- 미래의나에게동기부여
- rabbitmq
- MariaDB
- Spring + ELK
- MSA
- git
- 빅-오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |