본문 바로가기
Programming/Spring

Docker에서 MySQL 데이터 연동하기

by peter paak 2020. 11. 29.
728x90

1. Docker에서 MySQL 실행

docker run -d 
-p 3307:3306 
-e MYSQL_ROOT_PASSWORD=1234 
-e MYSQL_DATABASE=db 
-e MYSQL_USER=user 
-e MYSQL_PASSWORD=1234 
-v /Users/byeonggilpark/Desktop/db:/var/lib/mysql 
--name mysql 
mysql:5.7
--character-set-server=utf8 
--collation-server=utf8_unicode_ci

자세한 옵션들은 docker 공식 홈페이지의 mysql에서 확인 가능합니다

  • -d : 백그라운드에서 실행
  • -p : 포트 설정
  • -e : 환경변수 설정
  • -v : 볼륨 설정 (mysql의 데이터 저장소 설정)
  • -name : 컨테이너 이름 설정

docker log mysql로 volume(mysql 데이터가 저장된 위치) 위치 확인 가능

"Mounts": [
    {
        "Type": "bind",
        // 로컬 볼륨 위치
        "Source": "/Users/byeonggilpark/Desktop/db",
        // 컨테이너 볼륨 위치
        "Destination": "/var/lib/mysql",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],

2. 스프링부트 MySQL 설정

application.yml

spring.datasource.url: jdbc:mysql://localhost:3307/db?useSSL=false&serverTimezone=UTC
spring.datasource.driverClassName: com.mysql.cj.jdbc.Driver
spring.datasource.username: db
spring.datasource.password: 1234
spring.jpa.database-platform: org.hibernate.dialect.MySQL5Dialect

스프링부트를 실행하면 /Users/byeonggilpark/Desktop/db 위치에 mysql 데이터들이 존재함을 볼 수 있습니다.

번외

한글설정

  1. etc/mysql/my.cnf
[client] 
default-character-set=utf8 

[mysqld] 
character-set-server=utf8 
collation-server=utf8_general_ci 
init_connect=SET 
collation_connection=utf8_general_ci 
init_connect=SET NAMES utf8 

[mysql] 
default-character-set=utf8
  1. mysql 재시작
service mysql restart
  1. 기존 깨진 데이터 한글 변경
ALTER TABLE table_name convert to charset utf8;
728x90