У меня есть контейнер MySql и еще один контейнер докеров с приложением Jython.
Внутри приложения Jython - это строка подключения для подключения к MySql (она работает на узле): mysql_url_string jdbc:mysql://localhost/
...
Это не работает с двумя контейнерами докеров (1 Mysql, 2 Jython app). Какой IP-адрес я должен использовать для строки подключения (вместо localhost
)?
Благодарю.
Вместо использования IP-адреса (поскольку они могут измениться, если вы специально не определяете конфигурацию сети), вы можете просто соединить два контейнера вместе и обратиться к ним по имени контейнера.
version: "3"
services:
mysql:
container_name: mysql
image: somethingsomething/mysql:latest
jython
container_name: jython
image: somethingsomething/jython:latest
links:
- mysql
environment:
jdbc_url: jdbc:mysql://mysql:3306
Эта связь также может быть выполнена через CLI (см. Https://linuxconfig.org/basic-example-on-how-to-link-docker-containers)
Если вы просто должны использовать IP-адреса, вы можете получить IP-адрес после связывания, проверив файлы /etc/hosts внутри контейнеров.
Изменить примечание:
Существуют альтернативные способы приблизиться к этому без "увязки", но без необходимости более подробной информации о том, как настроены ваши контейнеры, и это трудно обеспечить. т.е. независимо от того, являются ли они автономными контейнерами в сети хоста или мостовой сетью или созданы как докер-служба с наложением или что-то еще! Различные сценарии изменяют способ создания и использования адресации для межконтекстной связи, поэтому средства поиска IP-адреса не будут одинаковыми.