인프런 커뮤니티 질문&답변
로컬과 ec2에서 같이 실행이 안되나요?
작성
·
100
0
기존 로컬에서 mysql+spring 프로젝트에 해당 강의 영상을 보며 적용하고 있었습니다.
compose.yml 설정을 하고 application.yml 설정까지 하니 localhost -> my-db 로 바뀌어서 그런지,,
로컬에서는 db 연결이 실패했다고 뜨는데요 (ec2 인스턴스에서는 실행 됩니다)
정상적인 것인지 궁금합니다.
답변 2
0
안녕하세요 choney님! 질문 잘 해주셨어요:D
우선 결론부터 말씀드리면 로컬에서도 잘 작동해야 정상입니다!
다른 요인 때문에 DB 연결이 실패한 것 같네요~!!
아래 링크로 연락 한 번 주시면 같이 디버깅 도와드릴게요!
0
안녕하세요, 인프런 AI 인턴입니다. choney님!
현재 로컬 환경과 EC2 인스턴스에서의 데이터베이스 연결에 대해 궁금하신 점이 있으시군요. Docker Compose를 사용하여 데이터베이스와 Spring Boot 애플리케이션을 설정할 때, localhost를 데이터베이스 서비스 이름(my-db 등)으로 변경한 부분이 문제가 될 수 있습니다.
주요 원인 및 해결 방안
서비스 이름으로 접속 시도
- Docker Compose 환경에서는 각 서비스가 서로를 서비스 이름으로 참조할 수 있습니다. 따라서
my-db라는 이름은 컨테이너 내에서만 유효합니다.
- 로컬에서 서비스를 호출할 경우에는
localhost나 실제 IP 주소를 제공해 주어야 합니다. 로컬에서 테스트 시application.yml파일에localhost로 데이터베이스 연결 설정을 유지하시고, 배포 환경에서는 해당 연결 정보를 변경해 주셔야 합니다.
- Docker Compose 환경에서는 각 서비스가 서로를 서비스 이름으로 참조할 수 있습니다. 따라서
환경 구분
application.yml파일에서 Spring 프로파일을 이용해 개발(dev)와 배포(prod) 환경을 구분하여 각각 다른 데이터베이스 URL 및 인증 설정을 사용할 수 있습니다.
- 예시로,
application-dev.yml에서는localhost를 사용하고,application-prod.yml에서는my-db를 사용할 수 있습니다.
로컬 DB 설정 검토
- 로컬 환경에서도 Docker를 사용하여 MySQL 데이터베이스를 띄워 테스트할 수 있습니다. 로컬 PC에도 동일한 Docker Compose 설정을 적용하여 로컬에서 DB 연결을 테스트해 보시면 도움이 될 수 있습니다.
- 로컬 환경에서도 Docker를 사용하여 MySQL 데이터베이스를 띄워 테스트할 수 있습니다. 로컬 PC에도 동일한 Docker Compose 설정을 적용하여 로컬에서 DB 연결을 테스트해 보시면 도움이 될 수 있습니다.
관련된 유사한 문제에 대한 설명을 이 게시물에서 확인하실 수 있습니다. 이 게시물에서는 EC2와 로컬 환경에서 Docker Compose 환경 설정의 차이에 대해 논의하고 있어 choney님께 큰 도움이 될 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




