phpMyAdmin не сохраняет данные
Моя задача заключалась в том, чтобы с помощью docker обернуть мое приложение с базой данных в контейнеры. Для мониторинга базы данных использовался phpMyAdmin. Финальный стек: MySQL + Docker + phpMyAdmin + Java + Hibernate.
Мой docker-compose.yml файл:
version: "3"
services:
db:
image: mysql:8.0.18
restart: always
environment:
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: usersDB
ports:
- '3306:3306'
volumes:
- mysql-data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin:latest
restart: always
ports:
- '8080:80'
environment:
- PMA_ARBITRARY=1
volumes:
mysql-data:
hibernate.cfg.xml файл:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost:3306/usersDB?createDatabaseIfNotExist=true</property>
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
После запуска программы и проверки работы базы данных оказывается, что данные записываются локально в MySQL Workbench, а на phpMyAdmin ничего нет. Абсолютно пусто.
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
PHPMyAdmin нужно "прилинковать" к контейнеру сервера MySQL и указать соответствующие переменные окружения:
version: "3"
services:
db:
image: mysql:8.0.18
restart: always
container_name: db
environment:
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: usersDB
ports:
- '3306:3306'
volumes:
- mysql-data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin:latest
container_name: pma
links:
- db
environment:
- PMA_HOST: db
- PMA_PORT: 3306
- PMA_ARBITRARY=1
restart: always
ports:
- '8080:80'
volumes:
mysql-data: