Sign inSign up

carbonsphere/dock-mysql

By carbonsphere

Updated about 9 years ago

MySQL Server Container with simple script to add new users and databases.

Image
1

375

carbonsphere/dock-mysql repository overview

Author : CarbonSphere

Email : [email protected]

Dockerfile for building MySQL Application. This Base image uses CentOS6

Steps for creating image from Dockerfile and running procedure:

1 : Clone carbonsphere/dock-mysql.git

> git clone https://github.com/carbonsphere/dock-mysql.git

2 : Build docker image from Dockerfile

  • Change Directory

    cd dock-mysql

  • Build Image

    sudo docker build -t #YOUR_IMAGE_NAME# .

  • ex: sudo docker build -t youraccount/dock-mysql .

3 : Run image

> sudo docker run -d -P youraccount/dock-mysql

4 : Run image

> sudo docker run -d -P --name db youraccount/dock-mysql 
  • docker_daemon_ip#:#image_port#

docker_daemon_ip can be found using "boot2docker ip" or you can check your environment variable "echo $DOCKER_HOST" image_port can be found using "docker port db"

Updates

This is an automatic MySQL replication container. It automatically chains linked containers as you start it.

  • Single docker host environment startup procedure.
  1. Start first MySQL container and name it "mysql".

    docker run -d --name mysql -p 3306:3306 carbonsphere/dock-mysql

  2. Obtain remote & slave keys in logs

    docker logs mysql

	Log Example:
	------------
	Default password detected. Generating new slave account password
	Default remote user password detected. Generating new remote account password
	New Remote password = aaaaaaaaa
	Slave account password = bbbbbbbb8da6092db237
	Starting mysqld:  [  OK  ]
	Setting mysql slave account password
  1. Start second MySQL Container and create link to first container

    docker run -d --name mysql2 -p 3307:3306 -e MYSQL_ID=2 -e MYSQL_MASTER_HOST="db" -e MYSQL_MASTER_PASS="bbbbbbbb8da6092db237" --link mysql:db carbonsphere/dock-mysql

	Required Environment variables:
	-------------------------------
	MYSQL_ID   				- Server ID (all servers must have different id)
	MYSQL_MASTER_HOST 		- Server IP or linked name
	MYSQL_MASTER_USER		- (Optional) default 'carbonSlave'
	MYSQL_MASTER_PASS		- Slave account password from first container
Note: If you would like to create more replication container, you must obtain "mysql2" slave account password for the thrid container.

4. Check slave server (mysql2) status.

> mysql>  show slave status;


If no error is present, then it is synced up with first container.

5. For creating round robin replication or Master-Master Replication.

Run the following mysql command on first (mysql) container.
	mysql> slave stop;
	mysql> CHANGE MASTER TO MASTER_HOST='mysql2_ip',MASTER_USER='mysql2_slave_user',MASTER_PASSWORD='mysql2_slave_password';
	mysql> slave start;
	mysql> show slave status;
If no errors are present, then it is setup properly.

Security

For security consideration - Default remote and slave accounts will now have a randomly generated passwords on container start. Passwords can be obtained by using "docker logs" command.

Test Script

Added local container test script which will spawn 5 (default) mysql containers (mysql1~mysql5) and link them together to form a daisy chain. The test script will then create 1 DB in each container and display all container's database at the end. If containers are linked properly, then all 5 DB should have the same databases.

Tag summary

Content type

Image

Digest

sha256:994c8c911

Size

155.4 MB

Last updated

about 9 years ago

docker pull carbonsphere/dock-mysql