Closed pillow12360 closed 1 day ago
현재 Docker Compose 환경의 데이터베이스가 실제 서비스 데이터베이스와 동기화되지 않아 테스트 결과의 정확성이 떨어지는 문제가 발생하고 있습니다.
backup.sql
)이 최신 데이터를 반영하지 않아 테스트에 필요한 최신 데이터가 포함되지 않습니다.backup.sql
) 생성을 자동화하여 최신 데이터를 유지해 주세요.backup.sql
이 자동으로 로드되도록 설정해 주세요.데이터 덤프 및 가져오기 스크립트를 제공해 주시면, 로컬에서도 최신 데이터를 쉽게 반영할 수 있습니다.
# 데이터베이스 덤프 생성
mysqldump -u root -p[dibb2024] dibb > backup.sql
# Docker Compose 환경에서 데이터 가져오기
docker cp backup.sql dibb-db-dev:/docker-entrypoint-initdb.d/backup.sql
테이블 생성 순서 오류
ERROR 1146 (42S02) at line 1: Table 'dibb.department' doesn't exist
Hibernate Dialect 설정 오류
Unable to determine Dialect without JDBC metadata
Docker Compose 설정
version: '3'
services:
db:
image: mysql:8.0
container_name: dibb-db-dev
environment:
MYSQL_ROOT_PASSWORD: dibb2024
MYSQL_DATABASE: dibb
ports:
- "3307:3306"
volumes:
- db-data:/var/lib/mysql
- ./src/main/resources/schema.sql:/docker-entrypoint-initdb.d/1-schema.sql
- ./src/main/resources/data.sql:/docker-entrypoint-initdb.d/2-data.sql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
데이터베이스 초기화 스크립트
schema.sql
: 테이블 생성data.sql
: 데이터 삽입Spring Boot 설정 (application.yml)
spring:
datasource:
url: jdbc:mysql://db:3306/dibb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
username: root
password: dibb2024
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
database-platform: org.hibernate.dialect.MySQLDialect
hibernate:
ddl-auto: none
defer-datasource-initialization: true
sql:
init:
mode: always
테스트 데이터 필요성
개발 환경 일관성
데이터 구조 문서화
# Docker 컨테이너 및 볼륨 제거
docker-compose -f docker-compose-dev.yml down -v
# 새로 빌드 및 실행
docker-compose -f docker-compose-dev.yml up --build
# API 테스트
curl http://localhost:8082/api/board?page=0&size=1&sort=
데이터 마이그레이션 전략
테스트 데이터 관리
보안
이 문서는 추후 비슷한 문제 해결이나 신규 개발자 온보딩에 참고할 수 있도록 보관하시기 바랍니다.
작업 내용
Pull Request: Docker Compose 설정 개선
변경 사항 요약
MySQL과 Spring Boot 애플리케이션 간의 안정적인 연결을 보장하기 위한 Docker Compose 설정 개선
상세 변경 내용
주요 변경사항
DB 헬스체크 추가
JPA 설정 개선
의존성 관리 개선
depends_on
조건을 healthcheck 기반으로 변경컨테이너 재시작 정책
restart: unless-stopped
추가로 장애 시 자동 복구 지원테스트 완료 사항
스크린샷
컨테이너 (스프링부트, db) 정상 실행 확인
Swagger 요청 로직 성공
Closes #108