それで、ホストマシン(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)。
誰かが助けてくれることを願っています!
次のものを使用できます: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
を使用できます。
/etc/mongod.confでbindIpを127.0.0.1から0.0.0.0に変更します。その後、動作します