web-dev-qa-db-ja.com

robomongoをmongoDB Dockerコンテナーに接続する

docker-compose を使用してNodeJSアプリを実行しています。すべてが正常に動作し、コンテナー内のMongoに接続することですべてのデータを表示できます。しかし RoboMongo に接続すると、データが表示されません。

この問題にどのように対処できますか?

13
migorman

Dockerコンテナー内でMongoDBへのRobomongo SSHトンネル接続を行う必要があります。まず、Dockerコンテナー内にsshサーバーをインストールする必要があります。

https://docs.docker.com/engine/examples/running_ssh_service/


その後、Robomongoで接続を構成する必要があります。 「接続設定」内には、Robomongo接続の設定タブがあります。

[SSH]タブに移動し、DockerコンテナーへのSSH接続を構成します。その後、「接続」タブに移動し、localhostスコープにあるかのようにMongoDBへの接続を構成します。

4
André Bonna

別の方法があります。あなたはできる

  1. Dockerアプリケーションをホストする実際の仮想サーバーにRobomongoを使用してSSHで接続します([SSH]タブ、[SSHトンネルを使用]をオンにして、それに応じて他のフィールドに入力します)。
  2. 端末の同じマシンにsshでログインします。
  3. docker psにはMongoDBコンテナが表示されます。
  4. docker inspect <mongo container id>は、そのコンテナに関する完全な情報を出力します。最後にIPAddressを探します。これにより、コンテナのローカルIPがわかります。
  5. Robomongoの[接続]タブで、そのコンテナーIPを使用して接続します。

Another sidenote:mongodbサービスポートを(Dockerfileやdocker-compose.ymlのいずれの方法でも)公開しないようにしてください。どこからでもオープンにアクセスできるデータベース。そのサービスのユーザー名/パスワードを設定していないと仮定すると、すぐにスキャンされてハッキングされます。

18
Maxim Zubarev

最も簡単な方法は、Mongo Container自体の転送を有効にすることです。これが、私のdocker-composeの例です。

mongo:
  image: mongo
  restart: always
  ports:
    - 27017:27017
4
Pratyush

Mongoとrobomongoの間の非互換性の問題であったため、sshを使用できない場合があることに注意してください。

「Robomongo v8.5以下はMongoDB 3をサポートしていません」。 dockerとは関係ありません。

1
migorman