# Running Joomla! in Docker on Ubuntu Server

## What is Joomla?

> Joomla! is a free and open-source content management system (CMS) for publishing web content. Over the years Joomla! has won several awards. It is built on a model–view–controller web application framework that can be used independently of the CMS that allows you to build powerful online applications. -https://www.joomla.org/about-joomla.html

## Installing Docker

1. Log into the Linux host and run the following commands in a terminal window
   # update software respositories
   sudo apt update
   # install available software updates
   sudo apt upgrade -y
   # install prerequisites
   sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
   # add docker gpg key
   curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
   # add docker apt repository
   sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
   # install docker
   sudo apt install docker-ce docker-compose containerd.io -y
   # add the current user to the docker group
   sudo usermod -aG docker $USER
   # reauthenticate for the new group membership to take effect
   su - $USER

## Running Joomla Container

1. Continue with the following commands in a terminal window
   # create working directories
   mkdir ~/docker/joomla -p && mkdir ~/docker/mariadb -p
   # set owner of working directories
   sudo chown "$USER":"$USER" ~/docker -R
   # create containers network
   docker network create containers
   # run the mariadb docker container
   docker run -d --name mariadb -e MYSQL_ROOT_PASSWORD=r00tp@$$ -e MYSQL_USER=joomla_rw -e MYSQL_PASSWORD='J00mla!!' -e MYSQL_DATABASE=joomla -v ~/docker/mariadb:/var/lib/mysql --network containers mariadb:latest
   # run the joomla docker container
   docker run -d --name joomla -p 8080:80 -e JOOMLA_DB_HOST=mariadb -e JOOMLA_DB_USER=joomla_rw -e JOOMLA_DB_PASSWORD='J00mla!!' -e JOOMLA_DB_NAME=joomla -v ~/docker/joomla:/var/www/html --network containers joomla:latest
2. Open a web browser and navigate to http://DNSorIP:8080
3. The Joomla! setup screen should be displayed
4. Select a Language and set the site title > Click Setup Login Data
5. Create an admin/super user account > Click Setup Database Connection
6. Enter the database configuration as follows:

   Database Type: MySQLi
   Host Name: mariadb
   Username: joomla_rw
   Password: J00mla!!
   Database Name: joomla
   Table Prefix: jmla_

7. Click the Install Joomla button
8. When the installation completes, click on the Completed & Open Site button
9. Welcome to Joomla!

Source: https://hub.docker.com/_/joomla