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 ничего нет. Абсолютно пусто.

MySQL Workbench

phpMyAdmin

docker ps


Ответы (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:
→ Ссылка