Подключить докер-контейнер к локальной рабочей среде MySQL DB

Здравствуй, у меня есть веб-приложение, работающее на моем локальном компьютере и подключенное к Mysql workbench. Сейчас я пытаюсь докеризовать веб-приложение. Кажется, я не могу подключить его к БД на моей локальной машине разработки (я использую Docker Desktop для Windows), может ли кто-нибудь сказать мне, как мне это сделать? Вот что у меня есть до сих пор.

`docker run -it -e "CATALINA_OPTS=-Dspring.profiles.active=dev -DPARAM1=DEV" -p 8080:8080 -p 8005:8005 -p 8009:8009 -p 3306:3306 --add-host=docker:192.168.1.7 -v C:\myapp\trunk\target\myapp.war:/usr/local/tomcat/webapps/myapp.war --name waitapp tomcat:8.0.38-jre8`

через несколько секунд я запускаю docker ps -a

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                           PORTS                                                                                            NAMES
2a1764dd9640        tomcat:8.0.38-jre8     "catalina.sh run"        2 minutes ago       Up 2 minutes                     0.0.0.0:3306->3306/tcp, 0.0.0.0:8005->8005/tcp, 0.0.0.0:8009->8009/tcp, 0.0.0.0:8080->8080/tcp   waitapp

Контейнер, кажется, работает, но я получаю 404 Not found, когда пытаюсь выполнить оставшийся запрос, это то же самое, что и при запуске из набора инструментов Spring с использованием встроенного сервера tomcat.

ПРИМЕЧАНИЕ. Я не хочу запускать отдельный контейнер mysql и связывать их по сети, я просто хочу попытаться заставить мое недавно созданное приложение Docker подключиться к моей локальной базе данных MySQL.


person Gman    schedule 15.12.2016    source источник
comment
Что вы имеете в виду под подключенным к MySQL Workbench? Также можете ли вы предоставить фрагмент кода или как вы пытаетесь получить доступ к контейнеру? Насколько я вижу, вы запускаете приложение в контейнере, как вы ожидаете, что приложение будет использовать БД вне своей сети? Вы используете базу данных MySQL в том же контейнере? Вы хотите подключиться к БД внутри контейнера с помощью MySQL Workbench?   -  person ReynierPM    schedule 15.12.2016
comment
Хорошо, я попытаюсь объяснить лучше, у меня есть MySQL Workbench, работающий на моем ноутбуке dell, и мое приложение spring подключается к нему, когда я запускаю его через SpringToolSuite IDE. Теперь я запускаю контейнер tomcat с приведенной выше командой запуска docker и монтирую свою войну внутри этого контейнера, но хочу, чтобы он по-прежнему подключался к базе данных MySQL, которая находится на моем ноутбуке. Как я могу добиться этого, не разрушая/раскручивая контейнер MySQL. Я хочу, чтобы контейнер общался с моей хост-машиной.   -  person Gman    schedule 16.12.2016
comment
Я не знаю точно, как этого добиться, но я думаю, что это возможно. Возможно, это и это может помочь вам понять, как работает сеть в Docker, и оттуда вы сможете достичь того, что вам нужно.   -  person ReynierPM    schedule 16.12.2016
comment
Хорошо, спасибо за ссылки, я отпишусь, когда узнаю, как это делается.   -  person Gman    schedule 16.12.2016


Ответы (1)


Как упоминалось в этом сообщении можно попробовать 2 вещи:

  1. Добавьте шлюз и используйте его из контейнеров, например

docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 dockernet

  1. В дополнение к контейнеру вашего приложения запустите контейнер прокси (ngnix?), который будет перенаправлять вызовы в БД при необходимости.

Этот ответ также покажите, как получить IP-адрес хоста внутри контейнера Docker.

person evgenyl    schedule 12.02.2017