What is Docker Compose?
Compose is a tool for defining and running complex applications with Docker. With Compose, you define a multi-container application in a single file, then spin your application up in a single command which does everything that needs to be done to get it running.
Compose uses a YML
\YAML
file to configure application’s services. Then, with a single command, all the services can be started or stopped from the configuration.
Some reasons you might want to use Compose :
- Multiple isolated environments on a single host
- Preserve volume data when containers are created
- Only recreate containers that have changed
- Variables and moving a composition between environments
Compose works in all environments: production, staging, development, testing as well as CI workflows.
Using Compose is basically a three-step process:
- Define your app’s environment with a
Dockerfile
so it can be reproduced anywhere. - Define the services that make up your app in
docker-compose.yml
so they can be run together in an isolated environment. - Run
docker-compose up
and Compose will start and run the entire app.
A docker-compose.yml
looks like this:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
Prerequisite
Docker Compose relies on Docker Engine
. So make sure you have installed Docker Engine
before installing Docker Composer.
Instructions on installing Docker Engine
can be found in the previous blog post: Install Docker on Ubuntu 18.04
Environment
- Operating System : Ubuntu 18.04 LTS (64-bit)
- Processor : Intel® Core™ i7-8750H CPU @ 2.20GHz × 12
- Memory : 15.3 GiB
Download Latest Version of Docker Compose
Ensure that you have installed curl
before running the following command.
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Apply Executable Permissions to the Binary
sudo chmod +x /usr/local/bin/docker-compose
Test the Installation
docker-compose --version
It will output like below:
docker-compose version 1.25.4, build 8d51620a
Command line Completion for Docker and Docker Compose
Add docker
and docker-compose
to the plugins list in ~/.zshrc
to run auto completion within the oh-my-zsh
shell. In the following example, ...
represent other Zsh
plugins that have been installed earlier.
plugins=(... docker docker-compose
)
References
- Compose Overview: https://docs.docker.com/compose/overview/
- Compose Features: https://docs.docker.com/compose/overview/#features
- Compose Installation: https://docs.docker.com/compose/install/#install-compose
- Command-line completion: https://docs.docker.com/compose/completion/
Advertisement