컨테이너·워크플로우 자동화/DocKer 기본 및 활용

Spring Boot와 MySQL 컨테이너를 함께 실행하기

Data Jun 2025. 10. 12. 17:38

하나의 애플리케이션에서 Spring Boot 서버와 MySQL 데이터베이스를 함께 사용하는 경우,
Docker Compose를 이용하면 두 컨테이너를 동시에 제어할 수 있습니다.
이번 글에서는 depends_on과 healthcheck를 활용해 MySQL이 완전히 실행된 뒤 서버가 시작되도록 설정하는 방법을 알아보겠습니다 

 

compose.yml 파일 작성하기

아래는 Spring Boot + MySQL 환경을 위한 compose.yml 예시입니다.

services:
  my-server:
    build: .
    ports:
      - 8080:8080
    depends_on:
      my-db:
        condition: service_healthy  # MySQL 컨테이너가 healthy 상태일 때 서버 시작

  my-db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: pwd1234
      MYSQL_DATABASE: mydb  # MySQL 실행 시 기본 생성할 데이터베이스 이름
    volumes:
      - ./mysql_data:/var/lib/mysql
    ports:
      - 3306:3306
    healthcheck:
      test: ["CMD", "mysqladmin", "ping"]
      interval: 5s   # 5초 간격으로 상태 점검
      retries: 10    # 10번까지 재시도

주요 설정 설명

항목 설명
build 현재 디렉터리 (.)에 있는 Dockerfile로 서버 이미지 빌드
depends_on my-db 컨테이너가 완전히 준비된 후 (health) my-server 실행
environment MySQL 비밀번호 및 초기 생성 데이터베이스 설정
volumes: MySQL 데이터를 로컬 폴더에 저장 (데이터 유지)
healthcheck MySQL이 정상적으로 실행됐는지 mysqladmin ping으로 체크
interval / retries 5초마다 검사, 최대 10회까지 재시도

 

 

 

정리하면

 

Docker Compose의 depends_on과 healthcheck 기능을 활용하면,
서버와 데이터베이스의 실행 순서를 안정적으로 제어할 수 있습니다.
이제 단 한 줄의 명령으로 완성된 개발 환경을 손쉽게 재현해보세요! 🐳