본문 바로가기
Q&A해결2025년 2월 8일1분 읽기

Docker Compose에서 depends_on 썼는데 DB가 아직 준비 안 된 상태에서 앱이 시작됩니다

보
보안전문가태호
조회 1749댓글 2

docker-compose.yml에서 depends_on으로 postgres를 먼저 띄우게 했는데, DB가 아직 초기화 중일 때 앱이 연결 시도해서 에러납니다.

Error: connect ECONNREFUSED 172.18.0.2:5432

댓글 2

김김영삼1년 전

depends_on은 컨테이너 시작 순서만 보장하고, 서비스 준비 상태는 보장하지 않습니다. healthcheck를 사용하세요:

services:
db:
image: postgres:16
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
app:
depends_on:
db:
condition: service_healthy

condition: service_healthy로 DB가 실제로 준비된 후에 앱이 시작됩니다.

보보안전문가태호1년 전
코드까지 알려주셔서 바로 적용했어요. 감사합니다!
Ctrl+Enter로 등록