Spring Docker Compose Support

img.png

Spring initialize 중 새로운게 보여서 확인해보았다. Spring Application이 시작될때 docker-compose up 명령어를 날려주는 것과 같은 기능을 제공하여 준다. Spring Application이 종료될땐 docker-compose down 명령어를 날려주고 Spring Application이 시작될 떄와 종료될 때 docker-compose를 해주는 라이브러리인 것 같다. Spring Boot 3 버전에서만 해당 기능을 사용가능하고 Project에 docker-compose.yml 파일 위치를 지정해주면 기능이 작동한다.
참고로 Spring Boot 3JDK 17 이상을 사용해야만 합니다.

dependencies {
    developmentOnly("org.springframework.boot:spring-boot-docker-compose")
}

dependencies에 해당 spring-boot-docker-compose 사용하여 컨테이너를 관리할 수 있습니다.
해당 모듈을 추가하게 되면 다음과 같은 일을 하게 됩니다.

  • 애플리케이션 디렉토리에서 compose.yml 및 기타 일반적인 작성 파일 이름을 검색합니다.
  • compose.yml로 작성된 것을 통해 docker compose up 명령을 Call 합니다.
  • 지원되는 각 컨테이너에 대한 서비스 연결 Bean 작성
  • 에플리케이션이 종료될 때 docker compose stop 명령을 Call 합니다.

Spring Boot의 지원이 올바르게 작동하려면 docker compose 또는 docker-compose CLI 애플리케이션이 경로에 있어야 합니다. 혹은 전역 변수로 설정되어 있다면 문제 없을 것으로 보여집니다.

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    build: .
    ports:
      - "9092:9092"
    environment:
      DOCKER_API_VERSION: 1.22
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./kafka-log:/kafka

저 같은 경우에는 kafka Docker로 구성하기(0) 이용하여 SpringBoot 기능에 Docker Compose Support 기능을 추가해볼 예정입니다.
해당 파일을 compose.yaml 으로 지정만해두면 application이 시작될 때나 종료될 때 docker compose up , docker compose stop을 통해 컨테이너를 관리해주며 편리하게 개발할 수 있게 될 것 같습니다.
앞으로 3.대 Spring Boot를 사용하며 많이 사용할 것 같아서 좋을 것 같습니다.

img.png

GitHub 소스 해당 테스트 내용은 여기에서 보고 확인해보시면 도움이 될 것 같습니다.

참조

댓글남기기