Install MariaDB in a Docker container
You can deploy MariaDB in a Docker container using Ansible.
Before you begin
For this section you will need a computer which has Ansible installed. You can use the same SSH key pair. You also need a cloud instance or VM, or a physical machine with Ubuntu installed, running and ready to deploy MariaDB.
Deploy a MariaDB container using Ansible
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. If you are new to Docker, consider reviewing Learn how to use Docker .
To run Ansible, you can use an Ansible playbook. The playbook uses the community.docker collection to deploy MariaDB in a container.
The playbook maps the container port to the host port, which is 3306.
- Use a text editor to add the contents below to a new file named
playbook.yml.
---
- hosts: all
remote_user: root
become: true
tasks:
- name: Update the Machine and Install dependencies
shell: |
apt-get update -y
apt-get -y install mariadb-client
curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh
usermod -aG docker ubuntu ; newgrp docker
apt-get -y install python3-pip
pip3 install PyMySQL
pip3 install docker
become: true
- name: Reset ssh connection for changes to take effect
meta: "reset_connection"
- name: Log into DockerHub
community.docker.docker_login:
username: {{dockerhub_uname}}
password: {{dockerhub_pass}}
- name: Deploy mariadb docker container
docker_container:
image: mariadb:latest
name: mariadb_test
state: started
ports:
- "3306:3306"
pull: true
volumes:
- "db_data:/var/lib/mysql:rw"
- "mariadb-socket:/var/run/mysqld:rw"
- "/tmp:/tmp:rw"
restart: true
env:
MARIADB_ROOT_PASSWORD: {{your_mariadb_password}}
MARIADB_USER: local_us
MARIADB_PASSWORD: Armtest123
MARIADB_DATABASE: arm_test
- Edit
playbook.ymlto use your values
Replace {{your_mariadb_password}} with your own password.
Also, replace {{dockerhub_uname}} and {{dockerhub_pass}} with your Docker Hub credentials.
- Create a
inventory.txtfile and copy the contents given below:
[all]
ansible-target1 ansible_connection=ssh ansible_host={{public_ip of VM where MariaDB to be deployed}} ansible_user={{user_of VM where MariaDB to be deployed}}
- Edit
inventory.txtto use your values
Replace {{public_ip of VM where MariaDB to be deployed}} and {{user_of VM where MariaDB to be deployed}} with your own values.
Ansible Commands
- Run the playbook using the
ansible-playbookcommand:
ansible-playbook playbook.yaml -i {your_inventory_file_location}
- Answer
yeswhen prompted for the SSH connection.
Deployment may take a few minutes.
The output should be similar to:
PLAY [all] *****************************************************************************************************************************************************
TASK [Gathering Facts] *****************************************************************************************************************************************
The authenticity of host '3.19.242.129 (3.19.242.129)' can't be established.
ED25519 key fingerprint is SHA256:uWZgVeACoIxRDQ9TrqbpnjUz14x57jTca6iASH3gU7M.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
ok: [ansible-target1]
TASK [Update the Machine and install docker dependencies] *************************************************************************************************************
changed: [ansible-target1]
TASK [Reset ssh connection for changes to take effect] ****************************************************************************************************************
TASK [Log into DockerHub] *********************************************************************************************************************************************
changed: [ansible-target1]
TASK [Deploy mariadb docker containere] *******************************************************************************************************************************
changed: [ansible-target1]
PLAY RECAP ************************************************************************************************************************************************************
ansible-target1 : ok=3 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Connect to Database using your local machine
You can use the instructions from the previous topic to connect to the database and confirm the Docker container deployment is working.