Przejdź do głównej zawartości

Docker Compose

Docker Compose is a tool that allows you to define and manage multi-container Docker applications. It enables the deployment of multiple containers defined in a single docker-compose.yml file, simplifying the management of complex containerized environments.

Key Features of Docker Compose

  1. Service Definition: Docker Compose allows you to define multiple services in a single YAML file. Each service can be run as a separate container.
  2. Network and Volume Management: It enables the definition of networks and volumes that can be shared between containers.
  3. Automation: Allows for the automatic building and running of containers, simplifying CI/CD processes.
  4. Orchestration: Enables orchestration of containers in various environments, making it easier to manage complex applications.

Docker Compose Use Cases

1. Simple Web Application

You can use Docker Compose to run a simple web application consisting of an Nginx server and a Node.js backend.

docker-compose.yml File:

version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
backend:
image: node:14
working_dir: /app
volumes:
- ./app:/app
command: npm start

Directory Structure:

.
├── app
│ └── index.js
├── docker-compose.yml
└── nginx.conf

Starting the Application:

docker-compose up -d

This command starts both the Nginx server and the Node.js backend.

2. Application with a Database

Docker Compose is ideal for running applications that require a database, such as a web application with a MySQL database.
It's important to note that running databases in containers isn't always desirable, depending on the use case. Always consider whether running the database in a container is the right choice.

docker-compose.yml File:

version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
wordpress:
image: wordpress:latest
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: example
depends_on:
- db

Starting the Application:

docker-compose up -d

This command starts MySQL and WordPress containers, automatically configuring the connection between them.

Basic Docker Compose Commands

  1. Start Services:

    docker-compose up
  2. Start Services in the Background:

    docker-compose up -d
  3. Stop Services:

    docker-compose stop
  4. Stop and Remove Containers, Networks, and Volumes:

    docker-compose down
  5. View Logs:

    docker-compose logs

Summary

Docker Compose is a powerful tool for managing complex containerized applications, allowing for easy definition, deployment, and management of multi-container environments. Its ability to orchestrate various services in a single YAML file makes it indispensable in the modern application lifecycle.