들어가며
토이 프로젝트 진행하면서 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을 사용하는 방법은 아래 포스팅에서 확인하면 된다.
[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
진행하면서 막히는 부분을 댓글로 남겨주시면 알고 있는 내용으로 최대한 설명해드릴게요 : )
'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 |