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