← Назад в словарь

Docker Compose (оркестрация контейнеров на одном хосте)

Docker Compose (оркестрация контейнеров на одном хосте) (Docker Compose) — компоновка Docker


Контекст термина

Термин используется в контексте контейнеризации и DevOps (Docker-стек на одном сервере). Не относится к Kubernetes-кластерам и не является полноценным кластерным оркестратором.


Суть в одном предложении

Docker Compose — это инструмент для описания и запуска нескольких контейнеров как единого приложения через один YAML-файл.


Краткое определение

Docker Compose позволяет управлять многоконтейнерным приложением (например, Nginx + PHP + MySQL) через файл docker-compose.yml, определяющий сервисы, сети и тома.


Где используется

  • Локальная разработка
  • Dev / Test окружения
  • Малые продакшен-серверы
  • CI-сборки
  • Монолитные приложения

Архитектурное значение

Docker запускает один контейнер. Compose управляет несколькими связанными контейнерами как стеком.

Пример стека:

  • nginx
  • php-fpm
  • mysql
  • redis

Вместо 4 отдельных команд — один YAML-файл.


Пример docker-compose.yml

version: "3.9"

services:
  app:
    build: .
    container_name: php_app
    volumes:
      - .:/var/www
    depends_on:
      - db

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Запуск:

docker compose up -d

Остановка:

docker compose down

Что делает Docker Compose

  • Запускает несколько контейнеров
  • Создаёт внутреннюю сеть
  • Управляет зависимостями
  • Подключает volumes
  • Позволяет масштабировать сервис

Масштабирование:

docker compose up --scale app=3 -d

Compose vs Kubernetes

Docker ComposeKubernetes
Один хостКластер
Простой YAMLБолее сложная модель
Dev / small prodHigh-load, cloud
Нет авто-recoveryЕсть auto-healing

Compose — лёгкий уровень оркестрации.


Compose V1 vs V2

Раньше:

docker-compose up

Теперь (официальный синтаксис):

docker compose up

Compose V2 встроен в Docker CLI.


Важные элементы docker-compose.yml

  • services
  • volumes
  • networks
  • depends_on
  • environment
  • restart

Пример restart policy:

restart: always

Где особенно полезен

  • Laravel + MySQL + Redis
  • WordPress + Nginx + PHP-FPM
  • Django + PostgreSQL
  • Микросервисы на одном сервере

Для одного контейнера Compose избыточен. Для кластера — недостаточен.


Частые ошибки

❌ Использовать latest без версий ❌ Хранить секреты в YAML ❌ Не использовать volumes для данных ❌ Пытаться заменить Kubernetes в high-load


Безопасность

Нельзя:

  • Публиковать .env в репозитории
  • Хранить пароли в docker-compose.yml

Лучше:

env_file:
  - .env

Что не является Docker Compose

  • Оркестратор уровня Kubernetes
  • CI/CD система
  • Docker Engine
  • Контейнер

Аналоги и связанные термины

  • Docker
  • Container
  • Docker Image
  • Kubernetes
  • Volume
  • CI/CD

Пример использования

«Проект запускается через Docker Compose: три сервиса (nginx, php-fpm, mysql) в одном стеке.»


Мини-FAQ

Можно ли использовать Compose в продакшене? Да, для небольших проектов или single-node инфраструктуры.

Можно ли масштабировать сервисы? Да, но без полноценного авто-восстановления.

Compose заменяет Kubernetes? Нет. Это инструмент другого уровня.


Смотри также

  • Docker
  • Container
  • Docker Image
  • Kubernetes
  • CI/CD