들어가며
필자는 로컬에서 개발한 코드를 개발서버나 운영서버에서 배포하기 위해 gradle의 bootRun을 사용한다.
이때에도 도커의 컨테이너가 죽어있다면 혹은 이미지조차 없다고 하더라도 자동으로 설치되고 실행되면 좋겠다는 생각이 들었다.
그래서 bootRun에 도커컴포즈 파일을 실행할 수 있도록 작업을 추가하였다. 뭐든 손이 덜 가야 편하니깐!
bootRun 설정하기
먼저 아래 포스팅과 동일한 상태까지는 따라와야 된다. 이번 글은 여기까지 설정을 완료된 상태라고 가정하고 작성했다.
그다음 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로 설정된 내용을 확인할 수 있다.
마치며
개인적으로 요즘 Spring + docker로 개발하는 경우가 많은데 이번 포스팅 주제는 꽤나 유용하게 사용하고 있다. 대게 dev, prod 환경은 이미 안정적으로 실행 중인 컨테이너들이 존재하지만 local 환경에서는 이렇게 컨테이너를 직접 관리해주는 상황이 많다.
처음은 번거롭더라도 한번 적용해보면 편안함을 느낄 수 있다.
Ref
https://github.com/bbubbush/bb-common-api/blob/master/build.gradle
진행하면서 막히는 부분을 댓글로 남겨주시면 알고 있는 내용으로 최대한 설명해드릴게요 : )
'Development > Spring & Springboot' 카테고리의 다른 글
[기술면접 준비] 비전공자도 쉽게 이해하는 AOP (0) | 2023.03.26 |
---|---|
[개발 Tip] Yaml, Properties 안에 중요한 정보를 암호화하기 feat. Jasypt 사용 방법 (0) | 2022.05.18 |
[Intelli J] Springboot + docker-compose 자동으로 함께 실행하기 feat. Gradle plugin 추천 (0) | 2022.04.28 |
스프링에서 빌더 패턴 사용 시 주의사항 feat. 마이바티스에서 빌더 객체 오류 (0) | 2022.04.24 |
Springboot에서 BCrypt 암호화(해시화) 구현하기 feat. 시큐리티 인증 없이 BCrypt 사용하기 (2) | 2022.04.23 |