Public Repository

Last pushed: 2 years ago
Short Description
Latest MySQL on Latest Alpine
Full Description

MySQL Alpine

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

Docker Pull Command