This tutorial should help people with no Docker Compose knowledge and those that just need to freshen their memory 😀
- What is Docker Compose?
- What do I need? The prerequisites
- The docker-compose.yml
- Docker Compose commands
1. What is Docker Compose?
Docker Compose is a tool that can be used to define and run multi-container Docker applications.
The application’s services are defined and configured using a YAML file.
With a single command you may manage all your application’s services.
2. What do I need? The prerequisites
Obviously you need to have Docker Compose installed on your machine. There are already plenty of articles out there and even the official Docker Compose Install documentation so we’re gonna skip that part.
You can’t run any container without a Docker Machine up and running. If you don’t know how to do this, check out my Docker Tutorial.
3. The docker-compose.yml
In order to be able to use the Docker Compose you need an YAML file which defines how your applications run, how they communicate, what images (or Dockerfile) they use and other aspects.
For the following tutorial steps you may either use your own YAML or the sample YAML from bellow:
version: '3.7' services: db: image: postgres restart: always environment: POSTGRES_PASSWORD: THEPASSWORD ports: - 5432:5432 adminer: image: adminer restart: always ports: - 8080:8080
If you want to learn more about what the docker-compose.yml offers, you can go ahead and read this article.
Docker Compose Commands
All YAML Defined Services
Starting an application with all associated services:
docker-compose up --build
The above command builds images that were never built or that have changes since the last run. After build is done all containers are started and the console remains attached to all containers.
However, running the containers with this command doesn’t allow you to detach from them without stopping them. So you should specify that you want to run in detached mode:
docker-compose up --build -d
Stopping all containers:
Stopping all containers, remove them and the networks:
Stopping and removing all containers and networks and volumes:
docker-compose down --volumes
Specific YAML Defined Service
Now that we have all containers running, if we only want to manage only one container we have the following commands:
Stopping a container:
docker-compose stop db
Starting a container:
docker-compose up start db
Rebuilding a container:
docker-compose up --no-start db
Restarting a container:
docker-compose restart db
Viewing logs of a single container:
docker-compose logs db
Hopefully this Docker Compose tutorial helps you understand what Compose is and how manage your containers with it.
If you’re not bored yet, check out my other Docker Articles.