Когда следует использовать Docker Compose?

«Когда следует использовать Docker Compose?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Docker Compose — идеальный инструмент для сценариев, где нужно определить и запустить многоконтейнерное приложение на одной машине. Его основное применение — локальная разработка и тестирование.

Основные сценарии использования:

  1. Локальная среда разработки: Быстро поднять весь стек зависимостей приложения (веб-сервер, база данных, кеш, очередь сообщений) одной командой docker-compose up.
  2. Автоматизированное тестирование (CI): В пайплайне CI можно использовать docker-compose для запуска интеграционных тестов, где приложение должно взаимодействовать с другими сервисами.
  3. Демонстрации и быстрые прототипы: Позволяет легко поделиться рабочей конфигурацией среды через один файл docker-compose.yml.

Пример docker-compose.yml для типичного веб-приложения:

version: '3.8'
services:
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: myapp
      POSTGRES_PASSWORD: secret
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine

  web:
    build: .
    ports:
      - "8000:8000"
    environment:
      DATABASE_URL: postgres://postgres:secret@postgres/myapp
      REDIS_URL: redis://redis:6379
    depends_on:
      - postgres
      - redis
    # Для разработки: монтируем исходный код
    volumes:
      - ./src:/app/src

volumes:
  postgres_data:

Чем Docker Compose отличается от оркестраторов (K8s): Compose работает на одном хосте, не обеспечивает отказоустойчивости, автоматического масштабирования или распределенного хранения конфигураций. Для продакшн-сред с высокими требованиями к доступности и масштабируемости нужен Kubernetes или аналогичный оркестратор.