하나의 애플리케이션에서 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 기능을 활용하면,
서버와 데이터베이스의 실행 순서를 안정적으로 제어할 수 있습니다.
이제 단 한 줄의 명령으로 완성된 개발 환경을 손쉽게 재현해보세요! 🐳
'컨테이너·워크플로우 자동화 > DocKer 기본 및 활용' 카테고리의 다른 글
| Docker restart 정책에서 unless-stopped의 의미와 동작 방식 (0) | 2026.02.07 |
|---|---|
| 컨테이너로 실행된 Spring Boot가 MySQL에 연결되지 않는 이유 (0) | 2025.10.12 |
| Docker Compose로 MySQL, Redis 컨테이너 동시에 띄워보기 (0) | 2025.10.12 |
| Docker Compose에서 build와 --build의 차이 이해하기 (0) | 2025.10.12 |
| Docker Compose를 사용하는 이유 (0) | 2025.10.12 |