NAME Test::Docker::MySQL is a module to launch MySQL in docker containers. SYNOPSIS # You have to setup docker manually before you use this (see SETUP section) $ENV{DOCKER_HOST} ||= 'tcp://192.168.59.103:2375'; # optional use Test::Docker::MySQL; my $dm_guard = Test::Docker::MySQL->new; my $port_1 = $dm_guard->get_port; # get a mysql container port my $port_2 = $dm_guard->get_port; # get another mysql container port my $dsn_1 = "dbi:mysql:database=mysql;host=127.0.0.1;port=$port_1"; my $dbh_1 = DBI->connect($dsn , 'root', '', { RaiseError => 1 }); my $dsn_2 = "dbi:mysql:database=mysql;host=127.0.0.1;port=$port_2"; my $dbh_2 = DBI->connect($dsn , 'root', '', { RaiseError => 1 }); undef $dm_guard; # dispatch `docker kill $container` command DESCRIPTION Test::Docker::MySQL is a module to launch MySQL in docker containers. METHODS "new" All parameters are optional. "tag" The tag to launch via Docker. Default value is "punytan/p5-test-docker-mysql". "ports" Specify port range by "ports". Default value is "[ 55500 .. 55555 ]", "get_port" Returns allocated port. SETUP OSX Install boot2docker and docker You can find the binary at . Initialize boot2docker $ boot2docker download && boot2docker init && boot2docker up Configure port forwarding $ boot2docker down $ for i in {55500..55555}; do VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$i,tcp,,$i,,$i"; VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$i,udp,,$i,,$i"; done $ boot2docker up Pull docker images for this module $ docker pull punytan/p5-test-docker-mysql CHEATSHEET Clean up containers $ docker kill $(docker ps -a -q) $ docker rm $(docker ps -a -q) DEBUGGING Set "DEBUG_TEST_DOCKER_MYSQL" as true to get verbose log generated by this module. AUTHOR punytan COPYRIGHT Copyright 2014- punytan LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. SEE ALSO Test::mysqld