Deploying Joomla Containers using Docker Compose
Docker Compose is a tool that allows you to deploy an application composed by multiple containers. For example, imagine that you want to deploy Joomla. It requires two containers, the web application (which it also runs the web server apache) and the database.

Deploying using the docker CLI
First, let's deploy Joomla using the Docker command line interface.
- Run the database container. We do it first because the database is a dependency of the application.
docker run --name db -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
- Run the application container, link it to the database and map the port 80
docker run --name my-joomla --link db:mysql -d -p 80:80 joomla
Executing containers in the background
The previous commands allows you to run the containers and all the logs will be shown in the terminal. If you want to run the containers in the background, you need to add the parameter -d
docker run -d --name db -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
Stopping containers
If you want to stop and delete a running container, allowing you to start another container with the same name, you just need to execute the following command. The last parameter is the container name.
docker rm -f db
NOTE: you can get the name of all running containers executing the command docker ps )
Installing Docker
You can install Docker by executing the following command:
curl -sSL https://get.docker.com/ | sh
Deploying using Docker Compose
Docker compose makes things more simple. It allows you to create a simple YAML file that will contain everything required to orchestrate both containers. Let's run the previous example using Docker Compose.
Create a file called compose-joomla.yml with the following content:
joomla:
image: joomla
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
and run docker-compose up
docker-compose up
Installing Docker Compose
If you do not have Docker Compose installed yet, you can do it by executing the following commands:
curl -sL https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Deploying Containers in the Cloud using Manageacloud
First, in our account, we create a server configuration, called docker_compose_joomla, using shell, for Ubuntu 14.04 and using the following content:
#!/bin/bash
set -x # enable debug
# install docker
curl -sSL https://get.docker.com/ | sh
# install docker compose
curl -sL https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# add the configuration for joomla using Docker Compose
mkdir ~/compose-joomla
cat > ~/compose-joomla/docker-compose.yml << EOL
joomla:
image: joomla
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
EOL
# execute both containers
cd ~/compose-joomla/ && /usr/local/bin/docker-compose up -d
Running applications in the cloud
A server configuration is everything that is required to run applications in the cloud using Manageacloud.
Deploying from the web interface
There are two ways to deploy a server from the web interface:
- By clicking "Quick Deployment" from the server configuration view
- By clicking "Production" or "Testing" from the advanced deployment page
Deploying using the mac cli
You can also deploy from the command line interface:
mac instance create -c docker_compose_joomla
Installing mac Command Line Interface
You can install mac cli by executing the following command:
curl -sSL https://manageacloud.com/mac | bash
Deploying using Manageacloud triggers
The mac cli and the web interface requires credentials and some other minor tweaks to run. However, if you use triggers , you will isolate all that complexity. You can deploy just by executing a POST into an URL.
- First, create a new trigger at you account
- Comment out the lines that contains the credentials:
export MAC_USER=[...]
export MAC_APIKEY[...]
- Add the following line to the trigger
mac instance create -c docker_compose_joomla
Now you can run the trigger, deploying the application, just executing a POST to an URL. Example:
curl -X POST https://manageacloud.com/trigger/my_trigger_65rov8bpp6pl8dr
Triggers and Webhooks
Triggers are bash scripts that isolates all the credentials and complexity. Triggers are specially ideal to run in Webhooks as part of the Continuous Integration or Continuous Deployment pipeline.
Deploying using macfiles
Sometimes is just not good enough to deploy single servers as you need to use infrastructure resources such as load balancers, autoscaling groups and more.
macfile is a technology agnostic framework that allows you to integrate any technology that uses bash . Access to the quickstart guide for more information.
Deploying using API
If you want to integrate the deployment of Joomla with an application, you should use the API to create the server. For example:
$ curl -X POST -i -H "Content-Type: application/json" \
-H "Authorization: ApiKey username:myhashedpass" -d \
'{"hardware": "512mb", "cookbook_tag": "docker_compose_joomla", "location": "sfo1", }' \
https://manageacloud.com/api/v1/instance
Deploying using Manageacloud scripts
Sometimes you need to deploy server configurations in existing servers. In this case, you can deploy using the Manageacloud script, accessible from the deployment page. For example:
curl -sSL https://manageacloud.com/api/cm/configuration/docker_compose_joomla/ubuntu/manageacloud-production-script.sh | bash
When should I use Manageacloud scripts ?
You can use Manageacloud script in many different cases, for example:
- In the Dockerfile to create the configuration of your container
- If you create development servers using Virtual Box
- and more
Conclusion
Docker Compose is a fantastic tool to deploy containers and microservices in the cloud. Using it along ManageaCloud offer us the flexibility required to deploy applications in the cloud, covering many different use cases and deployment scenarios.
Joomla Hosting Recommendation
ASPHostPortal.com provides our customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server. We offers Joomla hosting starts from $1/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable Joomla Hosting, we should be your best choice.