Gets the latest version of Alpine with the latest MySQL.
In favor for smallest image size.

Use existing database or a clean slate

Pair your database through Volume

# existing one
-v /my/existing/db:/var/lib/mysql

# start clean slate with empty directory
-v /my/empty/db:/var/lib/mysql

Use custom config

Currently default config is this

file: my.cnf

expire-logs-days = 3
user = root
datadir = /var/lib/mysql
port = 3306
log-bin = /var/lib/mysql/mysql-bin
socket = /var/lib/mysql/mysql.sock
!includedir /etc/mysql/conf.d/

Pair your config through Volume

-v /my/custom/configs:/etc/mysql/conf.d

Quick run command

docker run --rm -v /tmp/empty/database:/var/lib/mysql -p 3306:3306 harianto/mysql


Create empty database directory. Run the image as "mysqlsrv".

# create empty directory
mkdir -p /tmp/db
# assign directory and run image (remove image upon exit)
docker run --rm --name "mysqlsrv" -v /tmp/db:/var/lib/mysql harianto/mysql

# link mysqlsrv as db and run Alpine OS shell
docker run --rm --link mysqlsrv:db -it alpine /bin/sh

--rm : Automatically remove the container when it exits

--name string : Assign a name to the container

-v, --volume value : Bind mount a volume (default [])

-i, --interactive : Keep STDIN open even if not attached

-t, --tty : Allocate a pseudo-TTY

--link value : Add link to another container (default [])

Now in the Alpine Shell

MySQL Client hasn't been installed yet, you can do it like:

# install mysql-client
apk add --update mysql-client

# connect mysql assigned 'db' host
mysql -h db

Now in MySQL Shell

MariaDB [(none)]> show databases;
| Database           |
| information_schema |
1 row in set (0.02 sec)

Let’s create database

MariaDB [(none)]> create database example;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use example;
Database changed
MariaDB [example]> create table `users` (`id` bigint(20) not null auto_increment, `name` char(30) not null, `age` smallint(6) not null, primary key(`id`));
Query OK, 0 rows affected (0.01 sec)

MariaDB [example]> insert into users (id, name, age) value (1,'first',42);
Query OK, 1 row affected (0.01 sec)

MariaDB [example]> select * from users;
| id | name  | age |
|  1 | first |  42 |
1 row in set (0.00 sec)

MariaDB [example]> \q

In your host, check the folder: /tmp/db
See mysql data being populated