Docker Compose is a command-line tool for defining and configuring multi-container Docker applications. In other words, Docker Compose is used to link multiple containers and deploy an application from a single file. The Docker Compose tool can be used in the development, testing, environment preparation, and CI (Continuous Integration) workflow.
In the Serverspace you can create a server with already installed app "Docker".
For example, you need to deploy a WordPress website inside a container, and it requires one web server container (Apache/Nginx) and one database container (MySQL/MariaDB). With Docker Compose, you can easily include multiple containers in the docker-compose file. You can also add any other configuration you need to make your application fully functional.
This tutorial reviews installing Docker Compose on an existing host containing Docker and touches on deploying containers with the docker-compose command.
It is assumed that the host with Docker is already set up and running. Let's move on to the steps of installing the Docker Compose Tool.
The steps of installing Docker Compose
Run this commands on your server
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum -y install java
/bin/bash
And now run the commands listed below in the same order:
yum install epel-release -y
yum install python-pip -y
pip install docker-compose
Note
We recommend using the pip version 6.0 or higher package manager for the stable operation of Docker Compose. If the pip version is lower than 6.0, run the following command to update it:
pip install --upgrade pip
Check the version of Docker by submitting the following command:
docker-compose --version
Result:
docker-compose version 1.25.4, build 8d51620a
Deploying containers with the Docker Compose tool
Create a directory, then create a compose file in it. Name the file "docker-compose.yml" or "docker-compose.yaml". You will define the services for the applications and the container images in the compose file.
Before you start creating the compose file, download images of the WordPress and MySQL containers:
docker pull wordpress
docker pull mysql
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest d44c65e8e9a3 9 days ago 540MB
mysql latest 9b51d9275906 3 weeks ago 547MB
Then create a directory named "siteonwordpress":
mkdir siteonwordpress
cd siteonwordpress/
Create a docker-compose.yml file with the contents listed:
version: '3.0'
services:
frontserver:
image: wordpress
container_name: wp_cont
ports:
- 8080:80
links:
- databaseserver:mysql
environment:
WORDPRESS_DB_PASSWORD: erf6UiwkzjTH
databaseserver:
image: mysql:latest
container_name: wordpressdb_cont
environment:
MYSQL_ROOT_PASSWORD: erf6UiwkzjTH
Two services named "frontserver" and "databaseserver" are defined in the compose file above. For them, the container images are also specified. Environment variables are defined, and the MySQL root and DB WordPress passwords are also mentioned. Note that you should use spaces for indentation, according to the YAML markup.
Deploy your application, in this case, a WordPress website, using the command:
docker-compose up
Note
You should run "docker-compose up" from the directory where the docker-compose file is located.
The command above will deploy two containers named "wp_cont" and "wordpressdb_cont". Try accessing your WordPress website using the following URL:
http://{dockerserver-ip}:8080
Follow the instructions on the screen to complete the WordPress installation. This confirms that the WordPress site has been successfully deployed inside the containers by using the docker-compose utility.
Let's look at the parameters of the "docker-compose" command.
Output the containers deployed for the application
To output run the following command:
docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
wordpressdb_cont docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wp_cont docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Stopping and starting containers and their services
Press Ctrl+C while running "docker-compose up" or run the command below:
docker-compose stop
Stopping wp_cont ... done
Stopping wordpressdb_cont ... done
Run the command "docker-compose start" to run the containers and their services:
docker-compose start
Starting databaseserver ... done
Starting frontserver ... done
Browse container logs
To browse the all container logs or the logs of a particular container, run the command "docker-compose logs {service-name}":
docker-compose logs
docker-compose logs databaseserver
Stop and delete containers along with the created network
With the "docker-compose down" command, you can stop and delete containers with just one command:
docker-compose down
Stopping wp_cont ... done
Stopping wordpressdb_cont ... done
Removing wp_cont ... done
Removing wordpressdb_cont ... done
Removing network compose_default
Additional parameters you can find in the help section by running the command "docker-compose -help".