Я пытаюсь сделать так, чтобы MySQL был обнаружен всеми экземплярами докера и локальным хостом на удаленном сервере, но блокировал MySQL от внешней связи, за исключением определенного IP-адреса (мой домашний IP) или через туннель SSH.
Недавно я обнаружил, что в файле docker-compose.yml
вы можете указать в разделе ports
следующее:
mysql:
image: mysql:5.7
ports:
- "127.0.0.1:3306:3306"
Однако это означает только то, что он доступен для локального хоста и не может использоваться любым другим интерфейсом.
Вы можете спросить: «Ну, почему бы тебе не пройти через SSH Tunnel?«Ну, это решение, которое обязательно для подключения к экземпляру docker на удаленном компьютере напрямую, однако я не могу позволить моим локальным контейнерам docker использовать этот туннельный порт, в частности контейнер PHP 7.1.
Я также попытался изменить IPTables, чтобы игнорировать все внешние коммуникации через порт 3306, но по какой-то причине он все еще открыт.
У меня есть Putty, настроенный на туннельный порт 3306 на удаленном порту 10000 на локальном. MySQL Workbench может обращаться к нему на 10000, как обычно, поэтому туннель выполняет свою работу.
По сути, моя цель здесь - разрешить приложению на моем локальном хосте обращаться к удаленной базе данных, но не открывать удаленное для эффективного bind 0.0.0.0
, поскольку это крайне небезопасно, и я понимаю, что лучший способ получить доступ к MySQL через туннели напрямую коробка над SSH.
Я смотрел на то, чтобы моя локальная докерская попытка использовать IP хоста, expose_hosts
для docker-compose, всякого рода. Стучу головой о стену здесь.