티스토리 뷰

 이번에는 조금 특별하게 docker-compose를 사용해서 KafkaDocker환경에서 실행하려 합니다. 저에 경우에는 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
링크
«   2024/11   »
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
글 보관함