2014-12-18 3 views
12

Это более общий вопрос о том, как подключиться к локальным сервисам через Docker. В вопросе Github here есть аналогичный вопрос, который, похоже, не имеет никакого разрешения. То, что я действительно ищу, - это возможность локально работать с локальным MySQL-сервером разработки, а затем, когда я готов к развертыванию, протестировать локально в отношении вновь созданного образа приложения-док-станции.Как подключиться к локальному серверу MySQL через Docker?

В идеале, оба получают настройки с одного и того же места, так что я мог бы поставить mysql_server: host_ip. Это кажется типичным вариантом использования. Возможно ли подобное в настоящее время?

Я использую Boot2Docker специально с сервером MySQL, работающим на OS моего хозяина Mac OS X Yosemite НЕ в контейнере. Было бы здорово иметь более общий ответ для будущих читателей.

ответ

12

Docker CLI docs дают это решение (которое подразумевает, что вы работаете на хосте Linux с):

Иногда вам нужно подключиться к хосту Докер из вашего контейнера. Чтобы включить это, передайте 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

Это замечательно, но, насколько я могу сказать, что это не работает на Mac. Команда 'ip' не установлена ​​по умолчанию, и я не могу найти способ ее установки (« ip »- это трудная вещь для Google). Можете ли вы дать больше советов, как заставить это работать на Mac? – Eli

+0

У вас работает MySQL на Mac? Докер работает внутри какой-то виртуальной машины, работающей на Mac? Не могли бы вы дать некоторые подробности о вашей настройке? – Bryan

+2

Если вы используете Boot2Docker, он устанавливает хост Mac как 192.168.59.3 – Bryan

0

Чтобы помочь с несколькими дополнительными вопросами и главным сообщением, я хотел бы link to a repo Мне удалось управлять моей местной разработкой. Я прекратил попытки запуска любой службы для моей разработки непосредственно на OS X и использовать контейнеры Docker, поскольку они точно такие же, как при производстве, и мои среды могут быть сопоставлены и упорядочены.

Это репо состоит из веб-сервера, сервера базы данных и контейнера данных для загрузки баз данных MySQL.

У меня есть и буду продолжать поддерживать это репо и недавно обновил документацию, чтобы сделать ее ключом для других разработчиков.

Docker Repo on GitHub

Смежные вопросы