Для развёртывания phpMyAdmin с MySQL в Docker, вам нужно создать docker-compose.yml файл, который будет содержать конфигурацию для обоих контейнеров.

Почему нельзя просто скачать MySQL WORKBENCH и работать так же локально?

При работе с MySQL WORKBENCH на компьютерах с процессорами M1 и так далее, у вас может возникнуть проблемы с внешним интерфейсом программы, например

MySQL WORKBENCH VER: 8.0.36
MySQL WORKBENCH VER: 8.0.36

А если брать конкретнее, то:

MySQL WORKBENCH VER: 8.0.36
MySQL WORKBENCH VER: 8.0.36

Пункт 1

Для начала вам нужно иметь уже контейнер с развёрнутой базой данных mysql.

Чтобы его создать нужно ввести команду:

docker run --name mysql-test 
-v /Users/northbug/Development/testing/dbases:/var/lib/mysql 
-p 33060:3306 
-e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0.36

Примечание 1

Вам нужно заменить путь к локальному каталогу, который вы мэпите внутрь контейнера с СУБД. Можно заменить название mysql-test и пароль my-secret-pw.

Примечание 2

Если контейнер не запустится, т.е. не будет выведен при запуске команды docker ps -a, то может потребоваться изменить порт, указываемый с помощью ключа -p. Например, так: -p 63306:3306

Для просмотра работающих контейнеров:

docker ps

Для просмотра всех контейнеров:

docker ps -a

Обращайте внимание на id, name.

Для остановки контейнера:

docker stop <id или name контейнера>

id можно указывать частично (первые 3-4 символа).

Для запуска контейнера:

docker start <id или name контейнера>

id можно указывать частично (первые 3-4 символа).

Эти же действия указываются через Docker Desktop (кнопка "Play" / "Stop")

Чтобы удалить работающий контейнер необходимо его остановить или вызвать удаление с ключом -f

Например:

docker rm -f <id или name контейнера>

или

docker stop <id или name контейнера>

Пункт 2

Далее нужно создать файл docker-compose.yml в проекте с содержанием:

version: '3'
services:
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
ports:
- "8080:80"
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: your_root_password

Поменяйте your_root_password, your_database_name, your_username и your_password на ваши значения.

Пример:

version: "3"
services:
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1324
MYSQL_DATABASE: hello_phpmyadmin
MYSQL_USER: alexander
MYSQL_PASSWORD: 1324
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
ports:
- "8080:80"
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: your_root_password

После создания docker-compose.yml файла, выполните следующие команды в директории с файлом:

docker-compose up -d

Откройте браузер и перейдите по http://localhost:8080 или http://your_server_ip:8080 для доступа к phpMyAdmin. Введите учётные данные для подключения к MySQL.

В результате всей проделанной работы у вас должно получиться следующее:

А в консоли:

В phpmyadmin есть все функции, которые есть в MySQL WORKBENCH, поэтому, если у вас нету возможности работать на компьютере не на процессоре Apple Silicon, то он может является неплохой альтернативой.

Комментарии (6)


  1. FanatPHP
    25.03.2024 15:16
    +4

    Причина всех этих телодвижений довольно странная. Помимо workbench существует еще примерно дюжина программ, каждая из которых даст сто очков вперёд убогому phpmyadmin.


    1. krecebli
      25.03.2024 15:16

      Даже если принципиально нужен phpmyadmin, достаточно пару строк в docker-compose.yml за считанные секунды. Не такая вещь чтобы посвятить ему целую статью.


  1. Dominux
    25.03.2024 15:16

    А обязательно писать слова в названии статьи БОЛЬШИМИ БУКАВАМИ? И дополнять это отсутствием необходимых отступов в примерах кода docker-compose.yaml?


  1. antonstovpets
    25.03.2024 15:16

    phpmyadmin в 2024 году? Тот кто его использует скажи, ты под чем? Нам просто интересно.


  1. Misteg
    25.03.2024 15:16

    Если контейнер не запускается - нужно читать что написано в ошибке, а не менять порт.

    А с каких пор у docker-compose.yaml синтаксис такой классный? Я про отступы.

    База без проброса mount каждое пересоздание будет пустой. Так зачем нам тогда предварительно запущенный с помощь docket run контейнер?

    Почему используются образы latest?


    1. FanatPHP
      25.03.2024 15:16

      mount у него есть