[Packy] Docker로 MySQL 띄우고 Spring Boot에 연동하기
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