저번 포스트를 쓰고나서 개발하다보니 깨달은 것이 있다
docker compose 를 다 down 했다가 up 할 필요가 없다는 것! 괜히 mysql, redis도 같이 내렸다올렸다 했다
docker 에 대한 이해 부족이었다 Spring의 container의 이미지만 갈아주면 되잖아~~~
하고자 하는 방향
개발 docker 환경에서 Spring container의 이미지만 갈아끼우기 + IntelliJ 실행 버튼으로 터미널 명령어 합쳐 진행하기
버튼 하나만 누르면 개발 환경에 수정한 Spring 의 코드가 올라가길 바랐다
문제 배경

IntelliJ 의 Run/Debug Configuration 창에서
1. Gradle -> clean bootJar 설정 : 이미지를 말기 위한 Jar 생성
2. ShellScript -> docker compose build 설정 : Jar 를 가지고 이미지 생성
3. ShellScript -> docker compose up 설정 : 새로운 이미지로 Spring Container 다시 띄우기
4. Compound -> 위 1~3 번을 차례로 추가 : Compound Run 만 하면 세가지가 실행
문제점
위와 같이 구성했으나 문제가 있었다
설정상의 문제인지 Run 창에서 Jar 말고, 내가 손수 Terminal 버튼을 눌러줘야 그제서야 Docker 두가지 shell script가 각각 다른 창으로 진행됐다. 또한 그 창을 각각 누르면 그제서야 명령어가 진행되었다. docker build 가 먼저 되지 않으면 docker deploy 가 되어도 무용지물!
나는 버튼 한번으로 로컬 docker 에 배포되길 바랐는데 이건 뭐 버튼을 두세번, 그것도 내가 순서대로 눌러줘야 하니 효용이 없었다.
해결 방안
그래서 하나의 run configuration 을 잘 보니 Before launch 설정 부분이 있었다.

그래서 Script Text 부분에 && 로 build, deploy 명령어를 이어주고 Before launch에 아까 설정했던 Gradle run configuration 을 넣어주니 알아서 Run 창에서 Gradle 진행한 뒤 자동으로 Terminal 창으로 넘어가 해당 Script를 실행, 이미지도 잘 바뀌었다!
배운점
저번 포스트에서 DB를 로컬로 뺄걸 그랬다며 후회했는데, 아니다 이런 방법이 있었다.
mysql, redis 는 그대로 두고 spring image 만 갈아끼우면 된다. 그것도 실행버튼 한번으로~
'오픈소스 > 인프라(docker, K8S)' 카테고리의 다른 글
| Docker 로 Spring Boot, MySQL 연동하기 (1) | 2025.05.23 |
|---|