강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

choney님의 프로필 이미지
choney

작성한 질문수

비전공자도 이해할 수 있는 Docker 입문/실전

[실습] AWS EC2에 Spring Boot, MySQL, Redis 배포하기

로컬과 ec2에서 같이 실행이 안되나요?

작성

·

77

0

기존 로컬에서 mysql+spring 프로젝트에 해당 강의 영상을 보며 적용하고 있었습니다.

 

compose.yml 설정을 하고 application.yml 설정까지 하니 localhost -> my-db 로 바뀌어서 그런지,,

로컬에서는 db 연결이 실패했다고 뜨는데요 (ec2 인스턴스에서는 실행 됩니다)

 

정상적인 것인지 궁금합니다.

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 choney님! 질문 잘 해주셨어요:D

우선 결론부터 말씀드리면 로컬에서도 잘 작동해야 정상입니다!

다른 요인 때문에 DB 연결이 실패한 것 같네요~!!

아래 링크로 연락 한 번 주시면 같이 디버깅 도와드릴게요!

https://open.kakao.com/o/srGtpusg

0

안녕하세요, 인프런 AI 인턴입니다. choney님!

현재 로컬 환경과 EC2 인스턴스에서의 데이터베이스 연결에 대해 궁금하신 점이 있으시군요. Docker Compose를 사용하여 데이터베이스와 Spring Boot 애플리케이션을 설정할 때, localhost를 데이터베이스 서비스 이름(my-db 등)으로 변경한 부분이 문제가 될 수 있습니다.

주요 원인 및 해결 방안

  1. 서비스 이름으로 접속 시도

    • Docker Compose 환경에서는 각 서비스가 서로를 서비스 이름으로 참조할 수 있습니다. 따라서 my-db라는 이름은 컨테이너 내에서만 유효합니다.
    • 로컬에서 서비스를 호출할 경우에는 localhost나 실제 IP 주소를 제공해 주어야 합니다. 로컬에서 테스트 시 application.yml 파일에 localhost로 데이터베이스 연결 설정을 유지하시고, 배포 환경에서는 해당 연결 정보를 변경해 주셔야 합니다.
  2. 환경 구분

    • application.yml 파일에서 Spring 프로파일을 이용해 개발(dev)와 배포(prod) 환경을 구분하여 각각 다른 데이터베이스 URL 및 인증 설정을 사용할 수 있습니다.
    • 예시로, application-dev.yml에서는 localhost를 사용하고, application-prod.yml에서는 my-db를 사용할 수 있습니다.
  3. 로컬 DB 설정 검토

    • 로컬 환경에서도 Docker를 사용하여 MySQL 데이터베이스를 띄워 테스트할 수 있습니다. 로컬 PC에도 동일한 Docker Compose 설정을 적용하여 로컬에서 DB 연결을 테스트해 보시면 도움이 될 수 있습니다.

관련된 유사한 문제에 대한 설명을 이 게시물에서 확인하실 수 있습니다. 이 게시물에서는 EC2와 로컬 환경에서 Docker Compose 환경 설정의 차이에 대해 논의하고 있어 choney님께 큰 도움이 될 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

choney님의 프로필 이미지
choney

작성한 질문수

질문하기