подключение robomongo к контейнеру MongoDB docker

Я NodeJS приложение docker-compose. Все работает нормально, и я могу видеть все свои данные, подключившись к Mongo внутри контейнера. Но когда я подключаюсь к RoboMongo Я не вижу никаких данных.

Как я могу справиться с этой проблемой?

5 ответов


вы должны сделать туннельное соединение Robomongo SSH с MongoDB внутри контейнера docker. Прежде всего, вы должны установить ssh-сервер внутри контейнера docker.

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


после этого вы должны настроить соединение в Robomongo. Внутри "настройки подключения" есть вкладки конфигурации вашего подключения Robomongo.

перейдите на вкладку " SSH " и настройте SSH-соединение с контейнером docker. После этого перейдите на вкладку "подключение" и настройте соединение с MongoDB, как если бы оно было в области localhost.


есть другой способ. Ты можешь!--4-->

  1. SSH с Robomongo на ваш фактический виртуальный сервер, на котором размещаются ваши приложения docker (вкладка SSH, проверьте "использовать SSH туннель" и заполните другие поля соответственно)
  2. теперь ssh в ту же машину в вашем терминале.
  3. docker ps должен показать вам ваш контейнер MongoDB.
  4. docker inspect <mongo container id> распечатает полную информацию об этом контейнере. Ищите IPAddress в конце концов, это даст вам локальный IP контейнера.
  5. на вкладке "соединение" в Robomongo используйте этот IP-адрес контейнера для подключения.

еще один sidenote: убедитесь, что вы никоим образом не предоставляете свои порты службы mongodb (ни Dockerfile, ни docker-compose.yml), потому что это сделает вашу базу данных открыто доступной отовсюду. Предполагая, что вы не настроили имя пользователя / пароль для этой службы, вы будете отсканированы и взломаны скоро.


обратите внимание, что, возможно, вы не сможете использовать ssh, потому что это была просто проблема несовместимости между mongo и robomongo.

'Robomongo v8.5 и ниже не поддерживает MongoDB 3'. Это не имеет никакого отношения к докеру.


самый простой способ-включить пересылку самого контейнера Mongo, вот как выглядит мой docker-compose.

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

в файле docker-compose вы можете выставить порт к хозяину.

например, следующий код будет предоставлять порт 27017 внутри машины порту 27018 в Хосте.

app:
  image: node
  volumes:
    - /app
  ports:
    - "27018:27017"

потом, если у вас есть докер-машина установлен и ваша машина по умолчанию, вы можете сделать в терминале :

docker-machine ip default

это даст вам IP вашего хоста, например 192.168.2.3. Адрес база данных (хост) будет 192.168.2.3 и порт 27018.

Если ваша машина docker не является виртуальной и является вашей ОС, адрес вашей базы данных будет localhost в и порт 27018.