0. 들어가며
이전까지는 로컬 DB 환경으로 H2 데이터베이스를 사용하였다.
그러다 소프트웨어 마에스트로 과정을 하며 멘토님께서 'H2는 MySQL과 다른 데이터베이스이기 때문에 문법 차이 등으로 발생하는 문제를 로컬 환경에서 확인할 수 없다. 데이터베이스 환경을 운영 환경과 최대한 똑같이 해라'라는 조언을 들었었다.
그래서 로컬 DB 환경으로 MySQL을 사용하고, 이를 도커로 띄우기로 결정하였다.
도커로 MySQL을 띄우면 나의 로컬 환경으로부터 독립적으로 운영할 수 있기 때문에 설정이 꼬이는 문제를 방지할 수 있다.
더 나아가 docker-compose 등으로 설정 환경을 작성해두어 모든 운영체제에서 동일한 스펙의 DB를 다시 만들 수 있다는 장점이 있다.
1. Docker로 MySQL 띄우기
docker pull mysql
docker run --name [컨테이너 이름] -e MYSQL_ROOT_PASSWORD=[비밀번호] -d -p 3306:3306 mysql:latest
docker ps
docker exec -it [컨테이너 이름] /bin/bash
exec 명령어로 MySQL 쉘 창에 들어간 후 database를 만든다.
mysql -uroot -p
// 비밀번호 입력
create database blabla;
2. Spring Boot 연동하기
application.yml에 아래 코드를 추가해준다.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/packy?useSSL=false&serverTimezone=Asia/Seoul
username: root
password: [비밀번호]
jpa:
properties:
hibernate.dialect: org.hibernate.dialect.MySQLDialect
[트러블 슈팅] java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
아래 블로그를 참고하여 Reload All Gradle Projects를 해주어 해결했다.
3. Datagrip에 연결
User는 root, Password는 앞서 설정한 비밀번호이다.
Test Connection을 통해 연결이 잘 된 것을 확인할 수 있다.
마지막으로 Datagrip의 콘솔 창에서 명령어를 쳤을 때 아까 만든 database와 함께 현재 존재하는 데이터베이스들이 출력되는 것을 통해 연결이 잘 된 것을 다시 한번 확인할 수 있다.
Reference
https://velog.io/@gnyiii/Spring-Boot%EC%97%90-Mysql-Docker-%EC%97%B0%EA%B2%B0