프로젝트 개발 중 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 |
|---|