docker-compose を使用してNodeJS
アプリを実行しています。すべてが正常に動作し、コンテナー内のMongoに接続することですべてのデータを表示できます。しかし RoboMongo に接続すると、データが表示されません。
この問題にどのように対処できますか?
Dockerコンテナー内でMongoDBへのRobomongo SSHトンネル接続を行う必要があります。まず、Dockerコンテナー内にsshサーバーをインストールする必要があります。
https://docs.docker.com/engine/examples/running_ssh_service/
その後、Robomongoで接続を構成する必要があります。 「接続設定」内には、Robomongo接続の設定タブがあります。
[SSH]タブに移動し、DockerコンテナーへのSSH接続を構成します。その後、「接続」タブに移動し、localhostスコープにあるかのようにMongoDBへの接続を構成します。
別の方法があります。あなたはできる
docker ps
にはMongoDBコンテナが表示されます。docker inspect <mongo container id>
は、そのコンテナに関する完全な情報を出力します。最後にIPAddress
を探します。これにより、コンテナのローカルIPがわかります。Another sidenote:mongodbサービスポートを(Dockerfileやdocker-compose.ymlのいずれの方法でも)公開しないようにしてください。どこからでもオープンにアクセスできるデータベース。そのサービスのユーザー名/パスワードを設定していないと仮定すると、すぐにスキャンされてハッキングされます。
最も簡単な方法は、Mongo Container自体の転送を有効にすることです。これが、私のdocker-composeの例です。
mongo:
image: mongo
restart: always
ports:
- 27017:27017
Mongoとrobomongoの間の非互換性の問題であったため、sshを使用できない場合があることに注意してください。
「Robomongo v8.5以下はMongoDB 3をサポートしていません」。 dockerとは関係ありません。