Spring Boot를 사용해서 서비스를 만들 때 데이터베이스 같은 외부 서비스 들을 보통 한 개 이상 사용하게 되는데요, 이 때 docker compose를 사용하면 개발 과정에서 외부 서비스 들을 쉽게 관리할 수 있습니다.
docker-compose.yml 파일에 사용할 외부 서비스들을 정의하고 프로젝트 시작 전에 “docker-compose up” 프로젝트 종료 후 “docker-compose down” 명령어를 실행하는 방식이었죠.
Spring Boot 3.1 버전 부터는 docker compose 지원이 강화되어 프로젝트의 docker compose 파일을 감지하고 프로젝트가 기동 될 때 up, 중지 될 때 down 명령을 자동으로 실행해 줍니다.
바로 살펴봅시다!
필요 사항
- Spring Boot 3.1 이상
- docker-compose 2.2.0 이상
사용 방법
위와 같은 docker-compose.yml 이 프로젝트에 있다고 가정합니다.
build.gradle 파일에 spring-boot-docker-compose 라이브러리를 추가합니다. 개발환경에만 활성화되도록 developmentOnly 를 적용시킵니다.
끝!
직접 실행해서 결과를 확인해보겠습니다.
실행 결과
Spring Boot 실행 로그 중 3번째 라인에서 “Using Docker Compose file …” 을 확인 할 수 있습니다. 이후 Container 를 띄우고 Healthy 상태까지 기다린 이후에 프로젝트가 시작 되는 것을 확인 할 수 있네요!
정말 간단하죠? 심지어 데이터베이스 연결 정보를 애플리케이션 프로퍼티에 지정할 필요도 없습니다. spring-boot-docker-compose 에서 docker-compose.yml 을 읽어서 연결 정보가 필요하다면 ConnectionDetails 을 자동으로 만들어 주기 때문입니다. (자동으로 연결해주는 서비스 목록)
추가 설정
만약 커넥션 주소에 옵션 값을 추가하려고 한다면 docker compose yml 파일에 다음과 같이 추가 할 수 있습니다.
마치며
Spring Boot 3.1 부터 강화된 docker compose 지원은 로컬 개발 시 정말 손쉽게 docker compose 를 다룰 수 있도록 도와줍니다. 그동안 외부 서비스들을 별도로 띄워서 사용했다면 docker compose 를 한번 사용해 보시는 것도 좋을 것 같고 이미 docker compose를 사용하고 있었다면 Spring Boot 버전을 3.1 이상으로 올리는 것도 고려해 볼 만 할 것 같습니다. 이미 boot 버전이 3.1 이상이라면 이 기능은 안 쓸 이유가 없습니다!
댓글을 달려면 로그인해야 합니다.