들어가며
토이 프로젝트 진행하면서 Kafka가 필요하여 docker-compose 파일을 만들었다. 도커 컴포트 파일로 로컬 프로젝트를 실행할 때, 보통 아래와 같은 절차를 거친다.
- docker-compose Up을 하여 컨테이너를 실행한다.
- 스프링부트를실행한다.
근데 필자는 스프링부트를 실행할 때 자동으로 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 gradle task'를 누른 후 Tasks에 'dockerComposeUp'이라고 입력 후 확인 버튼을 누른다.
Gradle project는 처음에 비워져 있지만 우측 폴더를 누르고 본인의 프로젝트를 선택해주면 된다.
적용이 끝나면 Apply 후 OK를 눌러 설정을 닫는다.
이제 프로젝트를 다시 실행시켜보면 docker-compose.yaml에 설정된 컨테이너가 자동으로 올라가는 걸 확인할 수 있다.
마치며
이 기능을 한글로 정리한 글을 못 찾아 꽤나 고생했다. 덕분에 gradle에 대한 이해가 조금은 늘었고, 도커를 사용할 때 더욱 편해진 것 같아 성취감을 얻었다.
이번에 사용한 그래들 플러그인은 compose 외에도 도커 이미지 생성, 실행하는 기능도 지원하기 때문에 readme를 천천히 읽어보길 권한다.
인텔리제이 말고 gradlew bootRun을 사용하는 방법은 아래 포스팅에서 확인하면 된다.
Ref
https://github.com/bbubbush/bb-common-api/blob/master/build.gradle
진행하면서 막히는 부분을 댓글로 남겨주시면 알고 있는 내용으로 최대한 설명해드릴게요 : )
'Development > Spring & Springboot' 카테고리의 다른 글
[개발 Tip] Yaml, Properties 안에 중요한 정보를 암호화하기 feat. Jasypt 사용 방법 (0) | 2022.05.18 |
---|---|
[Springboot] bootRun과 docker-compose 자동으로 함께 실행하기 feat. spring.profiles.active 기본값을 local로 변경 (0) | 2022.04.29 |
스프링에서 빌더 패턴 사용 시 주의사항 feat. 마이바티스에서 빌더 객체 오류 (0) | 2022.04.24 |
Springboot에서 BCrypt 암호화(해시화) 구현하기 feat. 시큐리티 인증 없이 BCrypt 사용하기 (2) | 2022.04.23 |
Invalid character found in method name 오류 해결하기 (0) | 2022.04.04 |