Spring

[Packy] Docker로 MySQL 띄우고 Spring Boot에 연동하기

짱정연 2024. 1. 10. 04:38
반응형

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를 해주어 해결했다.

 

[Spring Boot] Cannot load driver class: com.mysql.cj.jdbc.Driver

나원참

velog.io

 

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

 

반응형