In order to secure a MySQL database, we’ve decided to redeploy the container it sits in as a Swarm service, using secrets.
We’ll use OpenSSL to generate secure passwords for both the MySQL users `root` and `user`. Then, we’ll save them to separate files. Next, we’ll create secrets for these passwords and finally create the MySQL service using these secrets.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create Secrets
Note: Please allow the lab extra time to fully spin up.
Create the MySQL
root
password:openssl rand -base64 20 > mysql_root_password.txt docker secret create mysql_root_password mysql_root_password.txt
Create a MySQL user password:
openssl rand -base64 20 > mysql_password.txt docker secret create mysql_password mysql_password.txt
- Create an Overlay Network for the Service
Create an overlay network:
docker network create -d overlay mysql_private
- Create the MySQL Service
Create a MySQL service:
docker service create --name mysql_secrets --replicas 1 --network mysql_private --mount type=volume,destination=/var/lib/mysql --secret mysql_root_password --secret mysql_password -e MYSQL_ROOT_PASSWORD_FILE="/run/secrets/mysql_root_password" -e MYSQL_PASSWORD_FILE="/run/secrets/mysql_password" -e MYSQL_USER="myUser" -e MYSQL_DATABASE="myDB" mysql:5.7