MySQL в Docker

В этой статье опишу как установить СУБД MySQL (MariaDB) в контейнер Docker для дальнейшего использования с другими контейнерами. MariaDB — форк системы управления базами данных MySQL, разрабатываемое сообществом под лицензией GNU GPL.

Для начала необходимо придумать пароли ук пользователям. Они передаются через три переменные окружения:

  • MARIADB_USER — имя пользователя базы данных
  • MARIADB_PASSWORD — пароль пользователя базы данных
  • MARIADB_ROOT_PASSWORD — пароль пользователя ROOT

Теперь для создания и запуска контейнера СУБД достаточно следующей команды:

# sudo docker run -d --name dbserver --env MARIADB_USER=dbuser1 --env MARIADB_PASSWORD=dbuserpwd --env MARIADB_ROOT_PASSWORD=rootpwd  mariadb:latest

Если к базе данных нужен пароль извне (например для доступа через приложения-клиенты), то необходимо пробросить порт 3306:

# sudo docker run -d --name dbserver --env MARIADB_USER=dbuser1 --env MARIADB_PASSWORD=dbuserpwd --env MARIADB_ROOT_PASSWORD=rootpwd -p 3306:3306 mariadb:latest

В результате создался контейнер c MariaDB, что видно в выводе Docker:

В принципе уже можно использовать и так, но давайте ещё подключим phpmyadmin. Будем использовать для соединения контейнеров связи, а не подключение по IP:

# sudo docker run --name phpmyadmin -d --link dbserver:db -p 8081:80 phpmyadmin

В результате на 8081 порту должен запуститься phpmyadmin:

Пробуем залогиниться под рутом:

Даём привилегии ранее созданному пользователю:

Теперь установленную СУБД можно использовать совместно с различными сервисами, которые могут быть как расположены как в других контейнерах, так и во вне их (в случае проброса порта).