본문 바로가기

springboot

[springboot - h2] docker 적응기

 

처음(인줄 알았으나 두번째)으로 도커를 사용해봤다

 

내 프로젝트는 thymeleaf, springboot, h2 를 사용했는데 springboot, h2를 같이 한 번에 사용하려면 각 컨테이너를 만들고 docker compose를 사용해 묶어야 한다.

 

매번 개발 때랑 서비스 때랑 properties의 datasource url을 바꿔주기 귀찮아서 테스트용 h2 컨테이너도 하나 더 만들었다.

그럼 테스트 용 h2를 실행하고 그냥 인텔리제이에서 앱을 실행시키면 동작한다

 

spring과 h2 연결은 아래 블로그 글들을 참고했고

https://velog.io/@seungju0000/docker%EC%99%80-h2-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0

 

docker와 h2 연결하기

docker 설치 및 실행 가능 환경d : 도커 컨테이너를 백 그라운드로 실행p : 컨테이너와 로컬의 포트를 연결하는 옵션v : DB 저장 경로 (/Users/seungjulee/study/h2/makeHere 부분을 본인이 실제 저장할 경로를

velog.io

https://velog.io/@seungju0000/docker-compose%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-spring-boot-h2-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0feat.redis

 

docker-compose를 이용하여 spring boot + h2 연결하기(feat.redis)

Dockerfile 먼저 어플리케이션 관련 설정을 만든다. docker-compose.yml 결과적으로 이렇게 되고, 하나하나 보도록 해보자. h2 먼저 이 설정은 내가 올린 이전 글의 옵션들을 docker-compose로 가져온 것이다.

velog.io

 

 

중간에 한 테이블의 필드명이 예약어와 관련돼서 스프링에서 도메인을 수정한 뒤 다시 빌드파일을 만들었는데 적용이 안돼서 혼자 어리둥절 하고있다가 깨달았다.

그냥 이미지를 실행한다고 빌드파일이 자동으로 먹히는 게 아니고 적용을 시켜줘야한다는 것...

 

docker-compose build --no-cache app

이러고 docker-compose up 했더니 잘된다.