Как подключиться к локальному серверу MySQL через Docker?
Это более общий вопрос о том, как подключиться к локальным сервисам через Docker. Там аналогичный вопрос в проблеме Github здесь, который, похоже, не имеет никакого разрешения. То, что я действительно ищу, - это возможность локально работать с локальным сервером MySQL MySQL, а затем, когда я готов к развертыванию, проверить локально на вновь созданное изображение докеры-кандидата развертывания.
В идеале, оба получают настройки с одного и того же места, поэтому я мог бы поставить mysql_server: host_ip
. Это кажется типичным вариантом использования. Возможно ли подобное в настоящее время?
Я использую Boot2Docker специально для сервера MySQL, работающего на моем компьютере Mac OS X Yosemite NOT в контейнере. Было бы здорово иметь более общий ответ для будущих читателей.
Ответы
Ответ 1
Docker CLI docs дает это решение (предполагается, что вы работаете на хосте Linux с):
Иногда вам нужно подключиться к хосту Docker из вашего контейнера. Чтобы включить это, передайте IP-адрес хостов Docker в контейнер, используя флаг --add-host
. Чтобы найти адрес хоста, используйте команду ip addr show
.
Флаги, которые вы передаете в ip addr show
, зависят от того, используете ли вы в сети IPv4 или IPv6. Используйте следующие флаги для поиска адреса IPv4 для сетевого устройства с именем eth0
:
$ HOSTIP=`ip -4 addr show scope global dev eth0 | grep inet | awk '{print \$2}' | cut -d / -f 1`
$ docker run --add-host=docker:${HOSTIP} --rm -it debian
Затем имя docker
внутри контейнера будет отображаться на IP-адрес хоста. Для вашего случая вы можете использовать docker run --add-host=mysql_server:$(hostip) ...
При использовании Boot2Docker он устанавливает сопоставление с хостом по предопределенному адресу, поэтому на этой платформе эквивалент вышесказанного является только одной командой:
$ docker run --add-host=docker:192.168.59.3 --rm -it debian
Ответ 2
Чтобы помочь с несколькими дополнительными вопросами и основным сообщением, я хотел бы ссылка на репо. Мне удалось управлять моим локальным развитие. Я прекратил попытки запуска любой службы для моей разработки непосредственно на OS X и использовать контейнеры Docker, поскольку они точно такие же, что и при производстве, и мои среды могут быть сопоставлены и оптимизированы.
Это репо состоит из веб-сервера, сервера базы данных и контейнера данных для загрузки баз данных MySQL.
У меня есть и буду продолжать поддерживать это репо и недавно обновил документацию, чтобы он стал ключом для другого разработчика.
Docker Repo на GitHub
Ответ 3
На mac с boot2docker вы можете использовать стандартные настройки mysql/mariadb по умолчанию, добавив хост Mac OS.
Это сработало для меня (с помощью, по-моему, настроек по умолчанию).