Подключение Robo 3T к контейнеру Docker MongoDB - PullRequest
0 голосов
/ 05 апреля 2019

В качестве попытки решить проблему с подключением Hibernate OGM я хочу посмотреть, подключусь ли я из Robo 3T.

Я создаю образ MongoDB и запускаю его.

docker ps:

MacBook-Pro: GoStopHandle NOTiFY $ docker ps КОНТЕЙНЕР ID ИЗОБРАЖЕНИЕ
ИМЕНА СОЗДАННЫХ КОМАНД СОСТОЯНИЕ СОСТОЯНИЯ 0375a68b9988 gostophandlemongodb: последняя запись
.s… "5 секунд назад Up 4 секунды
0.0.0.0:32844->27017/tcp goStopHandleMongo

IP-адрес контейнеров:

dockerinspect -f '{{range .NetworkSettings.Networks}} {{. IPAddress}} {{end}}' 0375a68b9988 172.17.0.2

Я ввел оболочку 'mongo':

docker exec -it goStopHandleMongo mongo admin

Я добавляю пользователя и пароль:

> db.createUser(
...   {
...     user: "NOTiFY",
...     pwd: "MyPassword",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
...   }
... )
Successfully added user: {
    "user" : "NOTiFY",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        },
        "readWriteAnyDatabase"
    ]
}

Затем я создаю соединение в Robo 3T: Robo 3T - create connection

Затем я настраиваю «Аутентификацию»:

Authentication

Когда я пытаюсь подключиться,получить:

Connection dialog

Есть предложения?

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Только когда мне пришлось перезагрузить мой Mac, я понял, что у меня все еще был запущен локальный экземпляр MongoDB, поэтому я подключался не к своему экземпляру Docker MongoDB, а к моему локальному (установлен Brew)пример.

Однажды я увидел ответ @Artjom Zabelin здесь и "Не забудьте сопоставить порт с хост-портом"

docker run --name some-mongo -p 27017:27017 -d mongo

Он подключен к MongoDB под управлением моегоконтейнер.

@ Фрэнк Юйчэн Гу был прав, что мне нужен «localhost».

1 голос
/ 05 апреля 2019

Чтобы подключиться, вы должны просто подключиться с помощью localhost:27017 на Robo3T.

Проблема возникает из-за путаницы между внутренним IP-адресом контейнера и его внешним IP-адресом.Внутренний IP-адрес - это адрес вашего контейнера в докерной сети, который изолирован от вашей хост-сети (если явно не указан мост).Когда вы выполняете команду docker inspect, вы получаете IP-адрес контейнера в сети Docker.

Ваш контейнер прослушивает 0.0.0.0:32844 в сети Docker и выставлен на хост с портом, сопоставленным с портом 27017. Так что если у вас есть другой контейнер в сети Docker , выдолжен получить доступ к вашему сервису с 172.17.0.2:32844.Но если у вас есть что-то за пределами докерской сети, вы должны получить доступ к своему mongodb с помощью localhost:27017 или [your host IP]:27017.

Надеюсь, это поможет!

...