web-dev-qa-db-ja.com

Dockerコンテナーからホストmongodbに接続する

それで、ホストマシン(DOドロップレット、Ubuntu 16.04)で実行しているmongodbに接続したいと思います。ローカルホストのデフォルトの27017ポートで実行されています。

次に mup を使用して、MeteorアプリをDOドロップレットにデプロイします。DOドロップレットは、Dockerを使用してコンテナー内でMeteorアプリを実行します。ここまでは順調ですね。標準のmongodb://...接続URLを使用して、アプリをmongodbに接続します。今私は次の問題を抱えています:

localhostはホストのローカルホストではないため、mongodb://...@localhost:27017...は明らかにdockerコンテナー内では機能しません。

私はすでにこれに関する多くのスタックオーバーフローの投稿を読みました、私はすでに使ってみました:

  • --network="Host"-0.0.0.0:80はすでに使用されているか、またはそのようなもの(nginxプロキシ)と表示されたため、機能しませんでした
  • --add-Host="local:<MY-DROPLET-INTERNET-IP>"mongodb://...@local:27017...経由で接続:パブリックIPからではなく、ローカルホストからのみmongodbにアクセスできるため、機能しません

これはよくある問題です。

tl; dr-ホストで実行されているサービスに接続できるように、Dockerコンテナー内のホストlocalhostを公開する適切な方法は何ですか? (ポートを含む、例:27017)。

誰かが助けてくれることを願っています!

16
Patrick DaVader

次のものを使用できます:172.17.0.1これは、コンテナが参照できるデフォルトのホストIPです。ただし、0.0.0.0をリッスンするようにMongoを構成する必要があります。

Docker 18.03以降 推奨 は特別なDNS名Host.docker.internalに接続することです

以前のバージョンでは、DNS名docker.for.mac.localhostまたはdocker.for.windows.localhostを使用できます。

27
Robert

/etc/mongod.confでbindIpを127.0.0.1から0.0.0.0に変更します。その後、動作します

1
Siva S