Нужно изнутри докер контейнера подключаться к базе MySQL на другом сервере. При этом на хосте проброшен ssh туннель и база доступна на порту 3307.
Внутри контейнера MySQL сервер, содержащий базу с Federated таблицами, ссылающимися на удаленный сервер, но не работает, т.к. в контейнере свой 127.0.0.1 и к нему порт не проброшен. SSH в контейнере нет, поэтому просто взять и пробросить не выйдет. Нужно как-то 127.0.0.1:3307 с хоста пробросить в контейнер. Причем тоже на 127.0.0.1, т.к. на удаленном сервере bind-address=127.0.0.1 и менять нельзя.
Что можете подсказать? Весь инет излазил.
Опишу подробнее:
Есть 2 сервера. К примеру, 1.1.1.1 и 2.2.2.2
на 1.1.1.1 продакшн сервер, в нем 2 базы, условно fastdata и userdata.
В первой данные, необходимые всем пользователям, обновляются чуть ли не ежесекундно. Во второй пользовательские данные - тоже часто обновляются, но не так.
На 2.2.2.2 тестовый сервер. Там куча всего. В т.ч. аж 2 MySQL сервера. Один на хосте, другой в контейнере. Итого:
1) Сервер на хосте, на стандартном порту 3306
2) Также проброшен порт с 1.1.1.1 - забиндено на 3307
3) База в контейнере (MariaDB 10.1.23 - как на проде), на хост выведено на порт 3308
Вот этот третий сервер должен быть копией базы на продакшене, но с другими пользователями (тестовыми). Т.е. база userdata там своя, а вот fastdata д.б. абсолютно идентична базе с прода в любой момент времени. Предположил решение через Federated таблицы, т.е. выглядит так:
ENGINE=FEDERATED DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci CONNECTION='mysql://root:password@127.0.0.1:3307/fastdata/table1';
Но не работает. Т.к. 127.0.0.1 в контейнере естественно свой и никакая продакшн база туда не забиндена. Подключиться к 172.17.0.3 внутри контейнера, на котором доступ к хосту нельзя, т.к. в базе на проде bind-address=127.0.0.1 и тупо откажет в подключении. Думал запускать контейнер с --net='host' - тогда он будет в одной сети с хостом, но тогда база контейнера будет на порту 3306, а он уже занят локальной базой, а как поменять порт внутри контейнера тоже не понял. Вот такая заковыка.