Development/Spring & Springboot

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

bbubbush 2022. 4. 29. 00:10

들어가며

필자는 로컬에서 개발한 코드를 개발서버나 운영서버에서 배포하기 위해 gradle의 bootRun을 사용한다.

이때에도 도커의 컨테이너가 죽어있다면 혹은 이미지조차 없다고 하더라도 자동으로 설치되고 실행되면 좋겠다는 생각이 들었다.

 

그래서 bootRun에 도커컴포즈 파일을 실행할 수 있도록 작업을 추가하였다. 뭐든 손이 덜 가야 편하니깐!

 

bootRun 설정하기

먼저 아래 포스팅과 동일한 상태까지는 따라와야 된다. 이번 글은 여기까지 설정을 완료된 상태라고 가정하고 작성했다.

 

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

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

bbubbush.tistory.com

반응형

 

 

그다음 build.gradle 파일을 열어 아래 내용을 추가하고 gradle update를 해주면 끝이다.

... 생략

tasks.named('bootRun') {
  systemProperty 'spring.profiles.active', findProperty('spring.profiles.active') ?: 'local'
  dockerComposeUp.run()
}

... 생략

 

간단하게 설명하자면 첫 번째 줄은 "spring.profiles.active 값이 없다면 'local'로 설정한다"라는 뜻이다. 보통은 default로 설정이 되지만 필자는 local, dev, prod로만 구분하기 때문에 default는 필요가 없다. 따라서 매번 active 값을 설정할 필요 없이 자동으로 local이 되도록 하였다.

 

다음 줄이 docker-compose.yaml에 있는 컨테이너를 실행하는 코드다. 간단명료해서 따로 설명을 하진 않겠다.

 

build와 bootRun을 하면 아래와 같이 컨테이너가 올라가는 로그active가 local로 설정된 내용을 확인할 수 있다.

bootRun 실행

 

마치며

개인적으로 요즘 Spring + docker로 개발하는 경우가 많은데 이번 포스팅 주제는 꽤나 유용하게 사용하고 있다. 대게 dev, prod 환경은 이미 안정적으로 실행 중인 컨테이너들이 존재하지만 local 환경에서는 이렇게 컨테이너를 직접 관리해주는 상황이 많다. 

 

처음은 번거롭더라도 한번 적용해보면 편안함을 느낄 수 있다.

 

 

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

 

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