Development/Spring & Springboot

[Intelli J] Springboot + docker-compose 자동으로 함께 실행하기 feat. Gradle plugin 추천

bbubbush 2022. 4. 28. 18:10

들어가며

토이 프로젝트 진행하면서 Kafka가 필요하여 docker-compose 파일을 만들었다. 도커 컴포트 파일로 로컬 프로젝트를 실행할 때, 보통 아래와 같은 절차를 거친다.

 

  1. docker-compose Up 하여 컨테이너를 실행한다.
  2. 스프링부트를실행한다.

근데 필자는 스프링부트를 실행할 때 자동으로 docker-compose 내에 명시된 컨테이너를 실행하고 싶었다. 

왜냐? 터미널 들어가서 명령어 치는 게 귀찮았기 때문이다.

 

docker-compose 자동으로 실행하기

적용하는 순서를 먼저 요약하면 다음과 같다. 기본적으로 각자에게 필요한 docker-compose 파일은 생성했다고 가정하고 진행하니 아직 docker-compose 파일이 없다면 먼저 준비해야 한다.

 

  • 'com.palantir.docker-compose' Gradle plugin 불러오기
  • build.gradle 내 'dockerCompose()' 설정하기
  • 인텔리제이 Run configuration 설정하기

 

1.  'com.palantir.docker-compose' Gradle plugin 불러오기

build.gradle 파일에 가서 plugins 블록에 아래 코드를 추가한다. 자동으로 컴포즈 파일을 만들어주기도 하고, 컨테이너의 실행 및 종료도 지원하니 자세한 정보는 이곳에서 확인하면 된다.

plugins {
  ... 생략
  
  id 'com.palantir.docker-compose' version '0.33.0'
  
  ... 생략
}

 

추가가 완료되면 꼭 gradle update를 실행해주자.

 

2.  build.gradle 내 'dockerCompose()' 설정하기

여기서는 실행할 docker-compos 파일의 이름을 설정한다. 기본값은 'docker-compose.yml'이지만 필자는 확장자를 *.yaml로 사용하기 때문에 아래와 같이 설정을 변경하였다.

 

만약 본인이 기본값과 동일하게 파일명을 사용한다면 이번 설정은 생략해도 된다.

... 생략

dockerCompose {
    dockerComposeFile 'docker-compose.yaml'
}

... 생략

 

1번 설정과 마찬가지로 작업 후에는 gradle update를 실행해줘야 한다.

 

 

반응형

3.  인텔리제이 Run configuration 설정하기

마지막으로 인텔리제이 설정을 해보자.

Run > Edit Configurations... 메뉴로 이동하여 configuration 탭 맨 아래를 보면 Before launch 영역이 있다.

Run configuration 화면

 

여기서 '+' 버튼을 누른 후 'Run gradle task'를 누른 후 Tasks에 'dockerComposeUp'이라고 입력 후 확인 버튼을 누른다.

Gradle project는 처음에 비워져 있지만 우측 폴더를 누르고 본인의 프로젝트를 선택해주면 된다.

 

dockerComposeUp task 추가

 

적용이 끝나면 Apply 후 OK를 눌러 설정을 닫는다.

 

이제 프로젝트를 다시 실행시켜보면 docker-compose.yaml에 설정된 컨테이너가 자동으로 올라가는 걸 확인할 수 있다.

 

dockerComposeUp 실행 결과
docker ps -a 실행 결과

 

마치며

이 기능을 한글로 정리한 글을 못 찾아 꽤나 고생했다. 덕분에 gradle에 대한 이해가 조금은 늘었고, 도커를 사용할 때 더욱 편해진 것 같아 성취감을 얻었다.

 

이번에 사용한 그래들 플러그인은 compose 외에도 도커 이미지 생성, 실행하는 기능도 지원하기 때문에 readme를 천천히 읽어보길 권한다.

 

인텔리제이 말고 gradlew bootRun을 사용하는 방법은 아래 포스팅에서 확인하면 된다.

 

[Springboot] bootRun과 docker-compose 자동으로 함께 실행하기 feat. spring.profiles.active 기본값을 local로 변

들어가며 필자는 로컬에서 개발한 코드를 개발서버나 운영서버에서 배포하기 위해 gradle의 bootRun을 사용한다. 이때에도 도커의 컨테이너가 죽어있다면 혹은 이미지조차 없다고 하더라도 자동으

bbubbush.tistory.com

 

 

 

Ref

https://github.com/bbubbush/bb-common-api/blob/master/build.gradle

 

GitHub - bbubbush/bb-common-api

Contribute to bbubbush/bb-common-api development by creating an account on GitHub.

github.com

진행하면서 막히는 부분을 댓글로 남겨주시면 알고 있는 내용으로 최대한 설명해드릴게요 : )