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 https://github.com/boot2docker/osx-installer/releases.

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 <punytan@gmail.com>

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