tl; др : используйте 172.17.0.1:3306
, если вы используете Linux.
Более подробное описание:
Как я понимаю что вам нужно сделать, это подключиться из вашего Docker контейнера к хост-порту. Но вы попытались привязать хост-процесс (MySQL) к сетевому интерфейсу контейнера. Не уверен, что означает, что хост-процесс пытается привязаться к сетевому пространству имен другого хост-процесса, но IIU C ваш MySQL процесс не должен иметь возможность связываться с этим адресом.
При запуске MySQL с настройками по умолчанию, связывающими его с 0.0.0.0
, он доступен для Docker контейнеров через Docker виртуальный мост. Поэтому вам следует направить ваши запросы от процесса WAR к процессу хоста через этот виртуальный мост (если вы используете этот сетевой режим. Если вы не изменили сетевые настройки Docker, это должно быть ). Это делается путем указания адреса шлюза моста в качестве адреса MySQL и порта, с которого он запущен.
Вы можете получить IP-адрес моста, проверив сетевые интерфейсы. Когда установлен Docker, он настраивает виртуальный мост по умолчанию, и он должен отображаться как docker0
, если вы используете Linux. IP-адрес для этого, скорее всего, будет 172.17.0.1
. Таким образом, ваш MySQL адрес с точки зрения контейнера - jdbc:mysql://172.17.0.1:3306/...
.
![enter image description here](https://i.stack.imgur.com/jwmpV.png)
1 - https://docs.docker.com/network/
2 - https://docs.docker.com/network/bridge/