Недавно я установил би-коннектор mongodb, чтобы использовать Tableau для визуализации моих данных. Я успешно установил его в контейнере докера, используя образ debian. Коннектор успешно получил доступ к моему удаленному экземпляру mongo и создал правильную схему.
Я попытался подключиться к своему контейнеру и установил клиент mysql, чтобы проверить, работает ли коннектор, все в порядке: результат
Но когда я выхожу из контейнера и пытаюсь со своего хоста, вот что я получаю (я сопоставил порт контейнера 3307 с портом хоста 9015)
$ mysql --host localhost --protocol tcp --port 9015 ОШИБКА 2013 (HY000): потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 2
Я пробовал использовать другую версию клиента mysql, пробовал отображать разные порты, пробовал 127.0.0.1 вместо localhost, ничего не работает.
Поэтому мне было интересно, должен ли коннектор быть на том же компьютере, что и клиент mysql или таблица?
Хорошо, я нашел проблему. Теперь это работает как шарм!
Оказывается, когда исполняемый файл mongodrdl находится в контейнере, ему необходимо установить параметр --addr с именем хоста контейнера в качестве имени контейнера (не работает с localhost или 127.0.0.1) Вот так:
/ usr / local / bin / mongosqld --addr mongo-bi-connector: 3307 --schema schema.drdl --mongo-uri $ MONGO_URI
Я опубликовал свои исходники на github и образ докера в хабе докеров.
https://github.com/emmanuelvisage/docker-mongo-bi-connector https://hub.docker.com/r/visage/mongo-bi-connector/
Я также добавил поддержку аутентификации
Имейте в виду, что это включает лицензионный контент и требует лицензии на предприятие Mongodb.
Пожалуйста !