Spring Boot 3.4.1 + MySQL + Redis 환경 구축 시 발생한 오류와 해결 방법

D3F D3V J30N·2025년 1월 2일
0

Error

목록 보기
1/4
post-thumbnail

1. MySQL Dialect 오류

문제 상황
org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

  • Spring Boot 3.4.1에서 기존 MySQL8Dialect 사용 시 발생

해결 방법

spring:
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect  # MySQL8Dialect에서 변경
  • Spring Boot 3.x 버전에서는 MySQLDialect를 사용해야 함
  • Hibernate 6.x부터 Dialect 네이밍이 변경됨

2. Docker 컨테이너 간 통신 오류

문제 상황

  • Spring Boot 애플리케이션에서 MySQL 컨테이너 연결 실패
  • Communications link failure 에러 발생

해결 방법

  • Docker Compose 네트워크 설정 추가
networks:
  zb_network:
    driver: bridge

services:
  mysql:
    networks:
      - zb_network
  redis:
    networks:
      - zb_network
  • 컨테이너 내부 통신을 위한 URL 수정
# 호스트 접근용 URL
jdbc:mysql://localhost:3308/zb_cms

# 컨테이너 내부 통신용 URL
SPRING_DATASOURCE_URL=jdbc:mysql://zb-cms-mysql:3306/zb_cms

3. Gradle 빌드 오류

문제 상황

Task :user-api:build FAILED
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain

해결 방법

  • Dockerfile 빌드 명령어 수정
# 변경 전
RUN gradle clean build -x test

# 변경 후
RUN gradle clean :user-api:build -x test
  • 프로젝트별 JAR 경로 수정
# 변경 전
COPY --from=builder /app/build/libs/*.jar app.jar

# 변경 후
COPY --from=builder /app/user-api/build/libs/*.jar app.jar

4. JUnit 테스트 컨텍스트 로딩 오류

문제 상황

Failed to load ApplicationContext for ...

해결 방법

  • 테스트용 설정 파일 분리
# application-test.yml
spring:
  datasource:
    url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
    driver-class-name: org.h2.Driver
    username: sa
    password:
  • 테스트 클래스에 프로필 설정
@SpringBootTest
@ActiveProfiles("test")
@Transactional
class SignUpCustomerServiceTest {
    // ...
}

5. Redis 연결 설정 오류

문제 상황

  • Redis 연결 타임아웃 발생
  • Redis 커넥션 풀 설정 누락

해결 방법

spring:
  redis:
    host: redis-local
    port: 6379
    database: 0
    timeout: 60000
    connect-timeout: 60000

보안 관련 주의사항

환경변수 관리

  • 비밀번호, API 키 등 민감정보는 환경변수로 관리
  • .env 파일은 .gitignore에 추가

로그 설정

  • 운영 환경에서 민감한 SQL 쿼리 로깅 비활성화
spring:
  jpa:
    properties:
      hibernate:
        show_sql: false
        format_sql: false

참고사항

  • Spring Boot 3.4.1 공식 문서
  • Docker Compose 네트워킹 가이드
  • MySQL 8.0.40 릴리즈 노트
  • Hibernate 6.x 마이그레이션 가이드

오늘의 명언

천 리 길도 한 걸음부터 시작된다.

-노자-

profile
Problem Solver

0개의 댓글