먼저, 도커를 통해 마리아디비를 설치하고 스프링 프로젝트와 연동시키는 것을 해 볼 예정이다. 컨테이너로 관리해서 프로젝트에서 소모성으로 각 컨테이너를 활용하고 테스트가 끝난 뒤 배포를 마치면 컨테이너를 삭제함으로써 간단하게 파일 정리를 할 수 있게 하는 게 목표이다.
MariaDB image를 먼저 받아야 한다. 도커 명령어를 통해 가져올 수 있는데 버전을 상관하지 않고 최신 버전으로 가져오는 쪽으로 진행하겠다.
docker pull mariadb
명령어 뒤에 버전 태그를 안 붙이면 latest(최신 버전)을 가져오게 된다.
캡쳐를 참고하면 이미지를 가져왔고 docker images
명령어를 통해 이미지를 정상적으로 가져왔는지 체크해 봤다.
마리아디비 컨테이너를 생성하기 전에 이름을 짓는 규칙이 있나 찾아봤더니 AWS에서 안내하고 있는 규칙이 있는 것 같아 가져왔다.
- 이름은 현재 AWS 리전의 현재 계정에서 고유해야 합니다.
- 이름은 대문자, 소문자, 숫자, 밑줄(_)을 포함할 수 있습니다.
- 이름은 길이가 1~255자여야 합니다.
- 이름은 대/소문자를 구분합니다. 예를 들어 myContainer라는 컨테이너와 mycontainer라는 폴더는 이름이 고유하므로 둘 다 둘 수 있습니다.
- 컨테이너를 만든 후 이름을 변경할 수 없습니다.
나는 이번에 생성할 MariaDB를 학교 JPA 자료를 예습할 때 사용할 예정이므로 이름을 jpaStudyMariaDB
로 지어보겠다.
docker run -p 3306:3306 --name jpaStudyMariaDB -e MARIADB_ROOT_PASSWORD=1234 -d mariadb
도커 컨테이너를 시작하는 명령어이고 -p
는 포트 -d
는 백그라운드에서 돌아감을 뜻한다. 나머지는 마리아디비 비밀번호와 위에서 체크한 컨테이너명 정도가 들어간다.
비밀번호는 어차피 로컬 테스트용이라 간단하게 1234
로 진행했다.
이제 컨테이너를 실행 시켜주고 마리아디비의 버전을 체크해 보면 된다.
docker exec -it jpaStudyMariaDB /bin/bash
mysql --version
각각 컨테이너 실행과 마리아디비의 버전 체크 명령어이다. 컨테이너 실행에 들어가는 이름은 아까 설정한 컨테이너 네임을 적어주면 된다.
mysql -u root -p
명령어를 통해 마리아디비에 접속한다.
위 과정을 모두 마치면 이렇게 마리아디비에 들어오게 된다. 이제 유저를 설정해 준다.
create user 'poly'@'%' identified by '1234';
grant all privileges on *.* to 'poly'@'%';
flush privileges;
poly
라는 사용자를 만들고 모든 DB 접근 권한을 허용했고 암호는 1234
로 설정해 주었다.
이제 exit
명령어를 통해 마리아디비를 나가고 생성한 유저로 다시 접속한다.
mysql -u poly -p
나는 poly
로 유저를 생성했기 때문에 위와 같은 코드로 접속을 했다.
이제 캡쳐처럼 사용할 데이터베이스를 생성해 줘야 한다.
create database myDB default CHARACTER set UTF8;
show databases;
간단하게 설명하면 myDB
라는 데이터베이스를 생성하고 한글, 문자열을 저장하게 만들었다.
이제 외부 접속을 시도해야 하는데 나는 인텔리제이를 만든 젯브레인사에서 제공하는 Data Grip을 사용하여 접속할 것이다. 인텔리제이를 사용하다보니 그냥 젯브레인에서 만든 툴들이 단축키가 잘 맞고 편리해서 붙여 사용한다.
데이터 그립에서 로컬 호스트와 마리아디비 포트를 적어주고 유저에는 아까 생성한 poly
유저를 적고 비밀번호도 아까 설정한 1234
를 적어주었다.
이제 프로젝트에 연결해서 사용하기만 하면 된다.
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/myDB
spring.datasource.username=poly
spring.datasource.password=1234
application.properties에 위와 같이 적어주면 된다.
yml에 적으면 알맞게 바꿔서 적어주면 끝이다.
JPA를 통해 간단하게 테이블을 생성해 봤는데 정상적으로 쿼리도 실행되고 우측에 연동된 데이터베이스를 보면 테이블도 생성된 것을 확인할 수 있다.