본문 바로가기
코딩코딩/웹개발

[DB, Docker] 2003, Can't connect to MySQL server on 'localhost'

by g0n1 2021. 12. 25.
728x90

문제상황

FastAPI에서 sqlalchemy를 이용해 db와 연결하던 중 테스트를 위해 local에 연결하였는데, 다음과 같은 에러가 발생했었다.

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'localhost' ([Errno 99] Cannot assign requested address)")
(Background on this error at: https://sqlalche.me/e/14/e3q8)

원인(추정)

mysql 컨테이너가 docker 내부 네트워크를 사용해서 다른 컨테이너에서 접근이 불가능

해결 방법

# 기존 코드
LOCAL_SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:Joan_Miro_1023@localhost:3306/image"
# 수정 코드
LOCAL_SQLALCHEMY_DATABASE_URL = "mysql+pymysql://root:password@host.docker.internal:3306/image"

 

 

알게 된 것

다른 프로젝트들의 docker-compose 파일들을 보면 항상 db와 app을 같이 올렸다 내렸다 했었는데, 굳이 db까지 올렸다 내릴 필요가 있나 싶었다.

이 문제를 보고나니 네트워크를 공유하기 위함이 아니었나 생각이 든다.

728x90

댓글