웹개발/SpringBoot

[Spring JPA] Docker를 이용하여 MySQL 데이터베이스 연결하기

뎁쭌 2023. 12. 7. 16:30
728x90
반응형

H2 인메모리 데이터베이스는 서버 재시작시 정보가 휘발되므로 MySQL로 데이터베이스 변경

 

1. Docker를 사용해 MySQL 실행하기

docker run --detach --env MYSQL_ROOT_PASSWORD=dummypassword --env MYSQL_USER=todos-user --env MYSQL_PASSWORD=dummytodos --env MYSQL_DATABASE=todos --name mysql --publish 3306:3306 mysql:8-oracle

docker run \ # Docker 컨테이너를 실행하는 기본 명령어
--detach \ # 컨테이너를 백그라운드에서 실행 (대화형 모드가 아님)
--env MYSQL_ROOT_PASSWORD=dummypassword \ # 환경 변수 설정: MySQL 루트 사용자의 비밀번호
--env MYSQL_USER=todos-user \ # 환경 변수 설정: 새로운 MySQL 사용자 이름
--env MYSQL_PASSWORD=dummytodos \ # 환경 변수 설정: 새로운 MySQL 사용자의 비밀번호
--env MYSQL_DATABASE=todos \ # 환경 변수 설정: 생성할 MySQL 데이터베이스 이름
--name mysql \ # 컨테이너에 'mysql'이라는 이름 지정
--publish 3306:3306 \ # 호스트의 3306 포트와 컨테이너의 3306 포트 연결 (포트 매핑)
mysql:8-oracle # 사용할 이미지 이름과 태그 (여기서는 Oracle의 MySQL 8 버전)

 

2. build.gradle에 mysql 의존성 추가

runtimeOnly 'com.mysql:mysql-connector-j'

 

3. application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/todos # 데이터베이스 URL 설정: JDBC를 사용하여 MySQL 데이터베이스에 연결합니다. 여기서 'localhost:3306'은 데이터베이스 호스트 주소와 포트이며, 'todos'는 데이터베이스 이름입니다.
spring.datasource.username=todos-user # 데이터베이스 사용자 이름 설정: 앞서 Docker에서 설정한 사용자 이름 'todos-user'를 사용합니다.
spring.datasource.password=dummytodos # 데이터베이스 사용자 비밀번호 설정: Docker에서 설정한 'dummytodos' 비밀번호를 사용합니다.
spring.jpa.hibernate.ddl-auto=update # JPA 하이버네이트 설정: 데이터베이스 스키마 자동 업데이트 설정. 이 설정은 애플리케이션 시작 시 데이터베이스 스키마를 현재 애플리케이션 모델에 맞게 자동으로 업데이트합니다.
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect # JPA 하이버네이트 설정: MySQL8에 최적화된 SQL 구문을 생성하기 위해 사용하는 방언(Dialect)를 지정합니다.

 

4.  확인

docker exec -it mysql bssh

위 명렁어를 통해 생성한 쉘 환경에서 제어

mysql -u root -p

- 위 명령어를 실행하면 비밀번호를 입력하라는 문구가 나온다. 이 때 설정했던 루트 사용자 비밀번호를 입력해주면 된다.

--env MYSQL_ROOT_PASSWORD=dummypassword \ # 환경 변수 설정: MySQL 루트 사용자의 비밀번호

 

데이터 베이스 보기

SHOW DATABASES;

todos 테이블 사용

USE todos;

 

todos에 있는 모들 테이블 보기

SELECT * FROM todo;