HTTPConnectionPool(host='localhost', port=80): Max retries exceeded with url: /api/resume/1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xffff9daacf80>: Failed to establish a new connection: [Errno 111] Connection refused'))
해결 1
pip를 통해 다운로드한 requests 모듈 대신 파이썬 내장 모듈인 urllib를 적용해 보았으나 도움이 되지는 않았다.
url: str = f"http://localhost/api/resume/{letter.resume_id}"
headers: dict = {"Authorization": authorization}
req = request.Request(url=url, headers=headers)
with request.urlopen(req) as response:
if response.status == 200:
return response.read().decode("utf-8")
else:
raise HTTPException(
status_code=response.status, detail="이력서 정보 조회 실패"
)
Google에서 검색을 해 보았으나 해결에 도움되는 정보가 없어 나만의 use case에서 발생하는 문제라고 판단했다.
컨테이너 내부의 /etc/hosts 파일에는 당연히 localhost = 127.0.0.1로 기록되어 있을 것이고
이는 data 컨테이너 자기 자신을 가리키는 것이라 생각했다.
data 컨테이너 외부의 부모 호스트에 접근하기 위해서는
localhost 대신 host.docker.internal을 입력해야 한다고 생각했다.
관련 이슈
67
문제 상황
FastAPI에서 GET
http://localhost/api/resume
요청 시 다음과 같은 오류가 발생했다.해결 1
pip를 통해 다운로드한 requests 모듈 대신 파이썬 내장 모듈인 urllib를 적용해 보았으나 도움이 되지는 않았다.
해결 2
Google에서 검색을 해 보았으나 해결에 도움되는 정보가 없어 나만의 use case에서 발생하는 문제라고 판단했다.
컨테이너 내부의 /etc/hosts 파일에는 당연히
localhost = 127.0.0.1
로 기록되어 있을 것이고 이는 data 컨테이너 자기 자신을 가리키는 것이라 생각했다. data 컨테이너 외부의 부모 호스트에 접근하기 위해서는localhost
대신host.docker.internal
을 입력해야 한다고 생각했다.따라서 GET 요청 부분을 다음과 같이 수정했다.
다음과 같이 POST /data/letter 요청에 대한 응답이 정상적으로 출력되었다.
참고 문서
Explore networking features on Docker Desktop | Docker Docs