CICD

[Docker] MySQL Workbench 사용해 프로젝트 DB 더미데이터 구성 및 Docker 전환 과정

limitation01 2025. 11. 27. 09:07

프로젝트 개발 중 DB에 더미데이터가 필요한 상황이 되었고, 내가 익숙하게 사용하던 도구는 MySQL WorkBench뿐이었다.
그래서 우선 로컬 DB에서 더미데이터를 만들고,이후 팀원들과 동일한 환경을 공유하기 위해 Docker 기반 MySQL로 전환하였다.

1. properties 파일 ddl-auto 수정

Spring Boot의 JPA 설정에서ddl-auto 기본값은 create로 되어 있었는데, 이 옵션은 애플리케이션 실행 시마다 테이블을 삭제하고 새로 생성한다.

spring.jpa.hibernate.ddl-auto=create

하지만 나는 직접 작성한 SQL 파일(CREATE, INSERT)을 통해더미데이터를 계속 유지하고 싶었기 때문에 DDL 자동 생성 기능을 끄기로 결정했다.

spring.jpa.hibernate.ddl-auto=none

이렇게 변경함으로써 JPA가 테이블을 건드리지 않고 내가 관리하는 SQL 기반 더미데이터를 그대로 사용할 수 있게 되었다.

2. MySQL WorkBench를 이용한 더미데이터 생성

다음으로 MySQL WorkBench를 로컬 DB에 연결해 각 엔티티별로 약 20개 정도의 더미데이터를 작성했다.

  • CREATE TABLE
  • INSERT INTO

형태로 스키마와 데이터를 직접 정의했고, 작성 후 SELECT 문으로 정상적으로 데이터가 들어갔는지 확인했다.

이 단계에서는

“로컬 서버에서 애플리케이션이 이 더미데이터를 잘 사용하는지”

까지 확인한 뒤 다음 단계로 넘어갔다.

3. 로컬 DB → Docker DB로 전환

로컬 DB에서 WorkBench로 생성한 더미데이터를 팀원들과 동일하게 사용하기 위해 Docker 기반 MySQL 환경으로 전환했다.

✅ Docker를 선택한 이유

  • docker-compose.yml만 있으면
  • 팀원 누구나 docker-compose up -d 한 줄로
  • 완전히 동일한 DB 환경을 재현할 수 있기 때문이다.

특히 MySQL은 아래 디렉토리를 활용하면 매우 편리하다.

MySQL 초기화용 디렉토리: docker-entrypoint-initdb.d

MySQL Docker 이미지에는 중요한 기능이 하나 있다.

/docker-entrypoint-initdb.d

이 디렉토리에 .sql 파일을 넣어두면 컨테이너 최초 실행 시 스키마 생성과 더미데이터 삽입을 자동으로 처리한다.

그리고 docker-compose.yml에서 다음과 같이 볼륨을 연결했다.

volumes:
  - ./mysql-init:/docker-entrypoint-initdb.d

4. Docker 컨테이너 재생성

이미 MySQL 컨테이너를 띄운 적이 있었기 때문에 초기화 SQL이 다시 실행되도록 컨테이너를 완전히 제거했다.

docker compose down -v
docker compose up -d

-v 옵션을 사용하는 이유

  • 이전에 생성된 MySQL 볼륨을 제거하지 않으면 SQL 초기화가 다시 실행되지 않기 때문

컨테이너 재생성 이후 IDE에서 데이터베이스 커넥션을 새로고침하면 더미데이터가 정상적으로 들어온 것을 확인할 수 있다.

'CICD' 카테고리의 다른 글

[Docker] Docker+Intellij로 MySQL 서버 띄워보자  (0) 2025.11.24