Base docker image to run a MySQL database server
To create the image ctlc/mysql, execute the following command on the ctlc-mysql folder:
sudo docker build -t ctlc/mysql .
The first time that you run your container, a new user admin with all privileges
will be created in MySQL with a random password. To get the password, check the logs
of the container by running:
sudo docker logs $CONTAINER_ID
You will see an output like the following:
========================================================================
You can now connect to this MySQL Server using:
mysql -uadmin -p47nnf4FweaKu -h<host> -P<port>
Please remember to change the above password as soon as possible!
MySQL user 'root' has no password but only allows local connections
========================================================================
In this case, 47nnf4FweaKu is the password allocated to the admin user. To get
the allocated port to MySQL, execute:
sudo docker port $CONTAINER_ID 3306
It will print the allocated port (like 4751). You can then connect to MySQL:
mysql -uadmin -p47nnf4FweaKu -h127.0.0.1 -P4751
Remember that the root user has no password but it's only accesible from within the container.
In order to persist the database data, you can mount a local folder from the host on the container to store the database files. To do so:
$ID=$(sudo docker run -d -v /path/in/host:/var/lib/mysql ctlc/mysql-php /bin/bash -c "/usr/bin/mysql_install_db")
This will mount the local folder /path/in/host inside the docker in /var/lib/mysql (where MySQL will store the database files by default). mysql_install_db creates the initial database structure.
Remember that this will mean that your host must have /path/in/host available when you run your docker image!
To set your initial root password, run:
ID=$(sudo docker run -d ctlc/mysql /bin/bash -c "/set_root_pw.sh <newpassword>")
Where <newpassword> is the password to be set for the root account. It will store the new container ID (like d35bf1374e88) in $ID. To create an image from that, execute:
sudo docker commit $ID ctlc/my-mysql-server
To import a SQL backup which is stored for example in the folder /tmp/sqlbackup in the host, run the following:
ID=$(sudo docker run -d -v /tmp/sqlbackup:/tmp ctlc/my-mysql-server /bin/bash -c "/import_sql.sh <rootpassword> /tmp/<dump.sql>")
Where <rootpassword> is the root password set earlier and <dump.sql> is the name of the SQL file to be imported.
You can now push your changes to the registry:
sudo docker push ctlc/my-mysql-server
In order to migrate your current MySQL server to a docker, perform the following commands from your current server:
To dump your databases structure:
mysqldump -u<user> -p --opt -d -B <database(s)> > dbserver_schema.sql
To dump your database data:
mysqldump -u<user> -p --quick --single-transaction -t -n -B <database(s) > dbserver_data.sql
Run the /run.sh script to start MySQL (via supervisor):
ID=$(sudo docker run -d -p 3306 ctlc/my-mysql-server /run.sh)
It will store the new container ID (like d35bf1374e88) in $ID. Get the allocated external port:
sudo docker port $ID 3306
It will print the allocated port (like 4751). Test your deployment:
mysql -uroot -p -h127.0.0.1 -P4751
Done!
Content type
Image
Digest
sha256:f9d6e351f…
Size
138.2 MB
Last updated
almost 11 years ago
docker pull ctlc/mysql-serf