docker-compose에 mariadb 올리고 spring boot 연동하기

Jung In Lee·2024년 4월 9일
1

Novelit

목록 보기
1/7

(1) mariadb 설치

  • 포트만 3306으로 설정해주고 설치한다.

  • mysql이랑 겹치므로 삭제하고 설치한다.

  • aws 포트경로랑도 일치해서 다른 포트로 하면 어디까지 바꿔야할지 감이안온다. 그냥 mysql을 사용하면 테이블을 백업하고 삭제하자.

  • docker-compose.yml 설정을 해준다.

version: "3"

services:
  mariadb:
    container_name: mariadb
    image: mariadb:10
    ports:
      - ${MARIA_BINDING_PORT}:${MARIA_PORT}
    volumes:
      - ${MARIA_DEFAULT_CONFIG_PATH}:/etc/maria/conf.d
      - ${MARIA_DATA_PATH}:/var/lib/maria
      - ${MARIA_ENTRYPOINT_PATH}:/docker-entrypoint-initdb.d
    env_file:
    - .env
    environment:
      - TZ= "Asia/Seoul"
      - MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
      - MARIADB_USER=${MARIADB_USER}
      - MARIADB_DATABASE=${MARIADB_DATABASE}
      - MARIADB_PASSWORD=${MARIADB_PASSWORD}
    networks:
      - backend
    restart: always

networks:
  backend:
  • conf.d -> my.cnf 만들고 붙여넣기
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server           = utf8mb4
collation-server               = utf8mb4_unicode_ci
  • 초기설정 : initdb.d -> create_table.sql과 load_data.sql 파일을 생성

  • .env

#####MARIADB
MARIA_BINDING_PORT=${인바운드 포트}
MARIA_PORT=${아웃바운드 포트}
MARIA_DEFAULT_CONFIG_PATH=./db/conf.d
MARIA_DATA_PATH=./db/data
MARIA_ENTRYPOINT_PATH=./db/initdb.d

MARIADB_HOST=${aws 탄력적IP}
MARIADB_PORT=${인바운드 포트}
MARIADB_ROOT_PASSWORD=${root password}
MARIADB_DATABASE=${database 이름}
MARIADB_USER=${사용자}
MARIADB_PASSWORD=${사용자 비밀번호}
  • 도커 업데이트
docker-compose up -d

spring boot mariadb 연결

  • build.gradle
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.4.1'
  • application.yml
    - jpa 설정 고쳐줌.
    - database-platform, ddl-auto
    - 원격 DB에 올라가니까 update로 변경
    - create: 테이블이 있을시 지우고 다시 create
    - update: 변경분만 업데이트
spring:
  jpa:
    database-platform: org.hibernate.dialect.MariaDBDialect 
    hibernate:
      ddl-auto: update  
  • mariadb 설정 추가
###mariadb
spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: ${MARIA_URL}
    username: ${MARIA_USERNAME}
    password: ${MARIA_PASSWORD}
  • env.yml
#MARIADB
MARIA_URL: jdbc:mariadb://${탄력적 IP주소}:${인바운드 포트}/${데이터베이스 이름}
MARIA_USERNAME: ${사용자}
MARIA_PASSWORD: ${비밀번호}
  • import.sql 있으면 넣으면된다.

  • 완성. 헤이디로 원격IP로 접속하면 잘된다.

참고 블로그

profile
Spring Backend Developer

0개의 댓글