Подключите Docker-контейнер к локальной рабочей среде MySQL DB
HI У меня есть мое веб-приложение, работающее на локальном компьютере и подключенное к MySQL Workbench, я сейчас пытаюсь докернизировать веб-приложение. Я не могу заставить его подключиться к БД на моей локальной машине разработчика (я использую Docker для 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, когда я пытаюсь выполнить запрос rest, это то же самое, что и при запуске изнутри набора инструментов Spring с использованием встроенного сервера Tomcat.
ПРИМЕЧАНИЕ. Я не хочу запускать отдельный контейнер mysql и связывать их по сети, я просто хочу, чтобы мое недавно созданное приложение Docker подключилось к моей локальной БД MySQL.
1 ответ
Как уже упоминалось в этом посте, вы можете попробовать 2 вещи:
- Добавьте шлюз и используйте его из контейнеров, например
docker network создать -d мост --subnet 192.168.0.0/24 --gateway 192.168.0.1 dockernet
- В дополнение к контейнеру вашего приложения запустите контейнер прокси (ngnix?), Который будет при необходимости перенаправлять вызовы в БД.
Этот ответ также показывает, как вы можете получить IP-адрес хоста в контейнере Docker.