Невозможно подключиться к MySQL, запущенному в док-контейнере, из другого док-контейнера с использованием JDBC. Я могу подключиться за пределами докера к каждому контейнеру, чтобы я знал, что они работают. Но контейнер в контейнер, использующий JDBC, не работает для меня.
На основе моего файла docker-compose я в настоящее время пробовал несколько комбинаций JDBC, включая (для URL JDBC) localhost, 0.0.0.0, 127.0.0.1, внутренние и внешние порты, имя_ контейнера, имя db и другие комбинации. .
Я также попытался добавить условие среды в файл docker-compose.
Также попытался использовать внутреннее сетевое имя докера.
Обыскал StackOverflow и попробовал любое предложение, которое могло бы сработать.
Пример синтаксиса JDBC с использованием имени контейнера db:
"jdbc: mysql: // test-mysql-docker: 3306 / ZipCodeLookup? UseSSL = false &" +
"ServerTimezone = America / New_York и пользователь = корень & пароль = thepass & autoReconnect = истина";
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "8089:8080"
volumes:
- /Users/mike/Library/apache-tomcat-9.0.7/conf/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
depends_on:
- db
db:
image: mysql
container_name: test-mysql-docker
ports:
- 3307:3306
volumes:
- ./ZipCodeLookup.sql:/docker-entrypoint-initdb.d/ZipCodeLookup.sql
environment:
MYSQL_ROOT_PASSWORD: "thepass"
Ожидаемым результатом будет результат почтового индекса SQL от службы, запущенной в первом приложении-контейнере Docker.
Фактический результат - ошибка, из-за которой службе не удалось связаться с базой данных после трехкратной попытки.