У меня проблема, и я не могу обернуться.
Я хочу использовать JDBC для подключения к базе данных MySQL внутри док-контейнера, однако получаю следующее:
Невозможно создать PoolableConnectionFactory (Невозможно создать соединение
на сервер базы данных. Попытка переподключения 3 раза. Сдаюсь.)
<Context>
<Resource name="jdbc/moviedb"
auth="Container"
driverClassName="com.mysql.jdbc.Driver"
type="javax.sql.DataSource"
username="user"
password="pass"
url="jdbc:mysql://localhost:3306/data?autoReconnect=true&useSSL=false"/>
</Context>
Затем я загружаю MySQL Workbench, чтобы убедиться, что MySQL работал на порту 3306. И он работал, и мои таблицы и данные отображаются. Я пошел и обновил мое приложение, и вдруг оно показало данные. Почему это происходит? Я чувствую, что это как-то связано с localhost vs 127.0.0.1 (или что бы то ни было). И этот же проект работал на прошлой неделе без рабочей среды, однако единственное отличие заключалось в том, что я не использовал файл docker-compose.
Это мой docker-compose файл для контейнера:
version: "2.1"
services:
database:
container_name: data
image: mysql
volumes:
- ./data.sql:/docker-entrypoint-initdb.d/data.sql
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: "data"
MYSQL_USER: "user"
MYSQL_PASSWORD: "pass"
MYSQL_ROOT_PASSWORD: "root"
Любое понимание будет высоко ценится.
Я забыл заметить, что при первом создании контейнера с помощью docker-compose up workbench не подключается к базе данных. только если я просто опустил контейнер, тогда docker compose start подключает верстак к серверу.