In my pursuit of an easier, personal "intranet", my next task was to get MySQL running. It's critical for the Grafana and Nagios instances that run my environmental monitoring. There is a lot of historical (hysterical?) data involved, so we'll make it easier and just migrate it over, right?
First, create your docker directory for MySQL :
mkdir -p /opt/docker/mysql
Then, create only one file in there, the infamous docker-compose.yml :
services:
mysql:
image: mysql:latest
container_name: mysql-container
environment:
MYSQL_ROOT_PASSWORD: super-secret-pwd
# uncomment below if you want to automatically create and select a database
# MYSQL_DATABASE: database_name
ports:
- "3306:3306"
volumes:
- /opt/docker/storage/mysql:/var/lib/mysql
Change the MYSQL_ROOT_PASSWORD row in the docker-compose.yml, and you're done.
Now, we are ready to spin that sucker up already - it really is that simple.
docker compose up -d
Give it a minute to spin it up. Then, test the connection (no MySQL Unix-socket will be available, so your MySQL command has to use the "--protocol TCP" option :
[jlewis@docker mysql]$ mysql -u root -p -h localhost --protocol TCP
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.7.1 MySQL Community Server - GPL
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
mysql> exit
Create whatever you need in your database, and you have a modular database that can be quickly moved over to another instance of docker if CPU gets too high. In my case, I'm migrating an existing MySQL database, so I'll run :
mysqldump -u root -p databasename > mysqldump-databasename.sql
Copy that to the location that can write this into the database, create the database ("CREATE DATABASE databasename" in the new MySQL server first) and import it :
mysql -u root -p --protocol TCP databasename > mysqldump-databasename.sql
Doing pretty good so far.


No comments:
Post a Comment