How to Install Docker Compose on Debian 10

How to Install Docker Compose on Debian 10

This Docker Compose tutorial explains how to Install Docker Compose on Debian 10. How to Install and Use Docker Compose on Debian 10 Linux. How to install the latest version of Docker Compose on Debian 10, Buster. Docker Compose is a tool that allows you to define and orchestrate multi-container Docker applications

Docker is a containerization platform that allows you to quickly build, test, and deploy applications as portable, self-sufficient containers that can run virtually anywhere.

Docker Compose is a tool that allows you to define and orchestrate multi-container Docker applications. It uses a YAML file to configure the application's containers, networks, and volumes.

Compose can be used for various purposes. Single host application deployments, automated testing, and local development are the most popular use cases for Docker Compose.

This tutorial explains how to install the latest version of Docker Compose on Debian 10, Buster. We'll also explore the basic Docker Compose concepts and commands.

Installing Docker Compose on Debian 10

The Docker Compose installation package is available in the official Debian 10 repositories, but it may not always be the latest version. The recommended approach is to install Docker Compose from the Docker's GitHub repository.

At the time of writing this article, the latest stable version of Docker Compose is version 1.23.1. Before downloading the Compose binary, visit the Compose repository release page on GitHub and check if there is a new version available for download.

Use the following steps to install the latest version of Docker Compose on Debian 10:

  1. Download the Docker Compose binary into the /usr/local/bin directory with wget or curl:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
  2. Use chmod to make the Compose binary executable:

    sudo chmod +x /usr/local/bin/docker-compose
    
  3. To verify the installation, use the following command which prints the Compose version:

    docker-compose --version
    

The output will look something like this:

```
docker-compose version 1.23.1, build b02f1306
```
Getting Started with Docker Compose

In this section, we will show how to set up a local WordPress development environment with Docker Compose.

Create a directory for the project and navigate into it

mkdir wordpress_app && cd wordpress_app

Open your text editor and create a file named docker-compose.yml:

nano docker-compose.yml

Paste the following content:

version: '3.7'

services:
  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress

  wordpress:
    image: wordpress
    restart: always
    volumes:
      - ./wp_data:/var/www/html
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
    depends_on:
       - db

volumes:
    db_data:
    wp_data:

Let's explain the code line by line

The first line specifies the Compose file version. There are several different versions of the Compose file format with support for specific Docker releases.

Next, we are defining two services, db and wordpress. Each service creates a separate container when Docker Compose is run.

The db service:

  • The image is set to mysql:8.0 image. If the image is not present, Compose will pull it from the Docker Hub public repository. The line starting with command overrides the default command.
  • The restart: always policy instructs Compose to restart the container if it goes down.
  • The container will use a named volume db_data to persist the database.
  • Defines the environment variables for the mysql:8.0 image.

The wordpress service:

  • Uses the wordpress image.
  • Mounts the wp_data directory on the host to /var/lib/mysql inside the container.
  • Forwards the exposed port 80 on the container to port 8080 on the host machine.
  • Defines the environment variables for the wordpress image.
  • The depends_on instruction defines the dependency between the two services. In this example, db will be started before wordpress.

From the project directory, start up the WordPress stack by running the following command:

docker-compose up

The output should look something like this:

...
] /usr/sbin/mysqld: ready for connections. Version: '8.0.18'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
db_1_99946702ac7e | 2019-12-15T21:37:29.109255Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
...

Docker Compose will pull the images, start the containers, and create the wp_data directory in your project directory.

Enter http://0.0.0.0:8080/ in your browser, and you will see the standard WordPress installation screen.

At this point, the WordPress application is up and running, and you can start working on it.

To stop Compose press CTRL+C.

You can also start the Compose in a detached mode by using the -d option:

docker-compose up -d

To view the running docker containers use the following command:

docker-compose ps

                 Name                               Command               State          Ports        
------------------------------------------------------------------------------------------------------
wordpress_app_db_1_99946702ac7e          docker-entrypoint.sh --def ...   Up      3306/tcp, 33060/tcp 
wordpress_app_wordpress_1_a428d8408817   docker-entrypoint.sh apach ...   Up      0.0.0.0:8080->80/tcp 

To stop the services when Compose is running in detached mode, use:

docker-compose stop

If you want to remove the containers entirely use the down option:

docker-compose down

Passing the --volumes switch also remove the data volumes:

docker-compose down --volumes

Uninstalling Docker Compose

If you need to uninstall Docker Compose you can simply remove the binary by typing:

sudo rm /usr/local/bin/docker-compose

Conclusion

To install Docker Compose on a Debian 10, simply download the binary in a directory in the system path and make it executable.

If you have any questions, please leave a comment below.

WordPress in Docker. Part 1: Dockerization

WordPress in Docker. Part 1: Dockerization

This entry-level guide will tell you why and how to Dockerize your WordPress projects.

This entry-level guide will tell you why and how to Dockerize your WordPress projects.

Docker Tutorial for Beginners Linux

Docker Tutorial for Beginners Linux

Docker Tutorial for Beginners Linux - In this video tutorial , we will look at some basic Docker commands and a simple build-ship-run workflow. We’ll start by running some simple containers, then we’ll use a Dockerfile to build a custom app. Finally, we’ll look at how to use bind mounts to modify a running container as you might if you were actively developing using Docker.

In this video tutorial , we will look at some basic Docker commands and a simple build-ship-run workflow. We’ll start by running some simple containers, then we’ll use a Dockerfile to build a custom app. Finally, we’ll look at how to use bind mounts to modify a running container as you might if you were actively developing using Docker.

List all containers in Docker(Docker command)

List all containers in Docker(Docker command)

We can get a list of all containers in docker using `docker container list` or `docker ps` commands.

We can get a list of all containers in docker using docker container list or docker ps commands.

List Docker Containers

To list down docker containers we can use below two commands

  • docker container list
  • docker ps

docker container ls command introduced in docker 1.13 version. In older versions we have to use docker ps command.

List all Containers in docker, using docker ls command

The below command returns a list of all containers in docker.

docker container list -all

or

docker container ls -all

List all containers in docker, using docker ps command

In older version of docker we can use docker ps command to list all containers in docker.

$ docker ps -all

or

$ docker ps -a

List all Running docker containers

The default docker container ls command shows all running docker containers.

$ docker container list

or

$ docker container ls

or

To get list of all running docker containers use the below command

$ docker ps

List all stopped docker containers command

To get list of all stopped containers in docker use the below commands

$ docker container list -f "status=exited"

or

$ docker container ls -f "status=exited"

or you can use docker ps command

$ docker ps -f "status=exited"

List all latest created docker containers

To list out all latest created containers in docker use the below command.

$ docker container list --latest

Show n last created docker containers

To display n last created containers in docker use the below command.

$ docker container list --last=n