programing

도커 컨테이너에서 호스트 mongodb에 연결

closeapi 2023. 6. 25. 20:06
반응형

도커 컨테이너에서 호스트 mongodb에 연결

그래서 호스트 시스템에서 실행 중인 mongodb에 연결하고 싶습니다(DO droplet, Ubuntu 16.04).기본값으로 실행 중입니다.27017로컬 호스트의 포트입니다.

그런 다음 저는 업업을 사용하여 도커를 사용하여 컨테이너 내에서 유성 앱을 실행하는 DO 드롭렛에 유성 앱을 배포합니다.지금까지는 좋습니다.A 표준mongodb://...연결 URL은 앱을 mongodb에 연결하는 데 사용됩니다.이제 다음과 같은 문제가 발생했습니다.

mongodb://...@localhost:27017...분명히 도커 컨테이너 안에서 작동하지 않습니다.localhost호스트의 로컬 호스트가 아닙니다.

나는 이미 이것에 대한 많은 스택 오버플로 게시물을 읽었고, 이미 다음을 사용해 보았습니다.

  • --network="host"말한 대로 작동하지 않았습니다.0.0.0.0:80이미 사용 중이거나 유사한 것(nginx 프록시)
  • --add-host="local:<MY-DROPLET-INTERNET-IP>"를 통해 연결합니다.mongodb://...@local:27017...또한 공용 IP가 아닌 로컬 호스트에서만 mongodb에 액세스할 수 있기 때문에 작동하지 않습니다.

이것은 일반적인 문제임에 틀림없습니다!

tl;dr - 호스트를 노출하는 올바른 방법은 무엇입니까?localhost호스트에서 실행 중인 서비스에 연결할 수 있도록 도커 컨테이너 안에 있습니까?(예: 27017 포트 포함).

누가 도와줬으면 좋겠어요!

사용할 수 있는 항목:172.17.0.1컨테이너에서 볼 수 있는 기본 호스트 IP이기 때문입니다.하지만 Mongo가 들을 수 있도록 설정해야 합니다.0.0.0.0.

도커 18.03부터 특수 DNS 이름에 연결하는 것이 권장됩니다.host.docker.internal

이전 버전의 경우 DNS 이름을 사용할 수 있습니다.docker.for.mac.localhost또는docker.for.windows.localhost.

/etc/mongod.conf에서 bindIp를 127.0.0.1에서 0.0.0으로 변경합니다.그러면 될 것입니다.

또는 임시 해결 방법으로 모든 IP 주소를 바인딩하는 플래그와 함께 ubuntu에서 mongod를 시작합니다(개발/학습 목적).

$ mongod --bind_ip_all

(도커 데스크톱을 사용하여) Windows용으로 100500 버전을 시도했지만 아무런 결과도 얻지 못했습니다...

안타깝게도 현재 Windows(도커 데스크톱 이상)에서는 --net=host를 지원하지 않습니다.

인용 출처: https://docs.docker.com/network/network-tutorial-host/ # 필수 구성 요소

호스트 네트워킹 드라이버는 Linux 호스트에서만 작동하며, Mac용 Docker, 윈도우즈용 Docker 또는 윈도우즈 서버용 Docker EE에서는 지원되지 않습니다.

https://docs.docker.com/toolbox/ 사용해 볼 수 있습니다.

언급URL : https://stackoverflow.com/questions/45461017/connect-to-host-mongodb-from-docker-container

반응형