사이드 프로젝트를 위해 Spring Boot와 MySQL을 Docker Compose로 띄우려고 합니다. depends_on 설정을 했는데도 앱이 DB 연결에 실패하며 종료됩니다.
코드:
version: '3.8'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
app:
build: .
ports:
- "8080:8080"
depends_on:
- db
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/mydb
오류: java.net.ConnectException: Connection refused (Connection refused)
시도: depends_on 옵션을 추가해 보았고, docker-compose up을 다시 실행해 봤습니다.
질문: depends_on을 설정했는데 왜 애플리케이션 컨테이너가 DB가 완전히 준비되기 전에 실행되어 연결 오류가 발생하는 건가요?
댓글9
-
빗방울
2026.10.31 00:54
-
빗방울
2026.10.31 02:49
맞음 ㅋㅋ
아니면 그냥 앱 쪽에서 재시도 로직 넣는 게 제일 속 편하긴 함.
-
빗방울
2026.10.31 03:13
ㄹㅇ 이거 모르면 맨날 낚임ㅋㅋ
condition: service_healthy 이거 추가하면 됨.
-
빗방울
2026.10.31 04:34
ㄹㅇ 이거 처음 하면 무조건 겪는 일임ㅋㅋ healthcheck 설정하는 게 정신건강에 이롭네요.
-
빗방울
2026.10.31 06:28
맞음ㅋㅋ 컨테이너 떴다고 서비스까지 준비된 건 아니라서 헷갈리기 쉽더라고요.
-
빗방울
2026.10.31 04:48
그거 wait-for-it.sh 같은 스크립트 써서
포트 열릴 때까지 대기시키는 방법도 있음ㅋㅋ
한번 찾아보셈
-
빗방울
2026.10.31 05:06
아니면 그냥 스프링 부트 설정에서
restart: always 줘서 계속 재시작하게 만드는 방법도 있긴 함ㅋㅋ
어차피 결국엔 뜰 거니까 대충 이렇게 때우는 사람들도 많더라고요
-
빗방울
2026.10.31 05:48
아 ㅋㅋㅋ 저도 귀찮을 때 그냥 restart 박아놨는데
생각보다 이게 제일 확실하긴 함ㅋㅋ 그냥 무지성으로 띄울 때 개꿀임
-
빗방울
2026.10.31 06:30
아니면 그냥 로컬에 DB 따로 띄우고 연결하는 게 개발할 땐 훨씬 편하긴 함ㅋㅋ
컨테이너로 다 관리하려다 보면 이런 설정 잡는 게 더 일인듯ㄷㄷ
모든 이야기1454
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
원래 depends_on은 컨테이너 실행 순서만 정해주는 거임.
DB 프로세스가 내부적으로 완전히 뜰 때까지 시간이 좀 걸려서 그런듯.
healthcheck 설정해서 준비될 때까지 기다리게 해보셈.