Что такое Docker Compose и как его использовать?

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

Ответ

Docker Compose — это инструмент для определения и запуска мультиконтейнерных приложений Docker. Вместо ручного запуска каждого контейнера отдельными командами, вы описываете всю инфраструктуру (сервисы, сети, тома) в одном декларативном YAML-файле (docker-compose.yml), а затем управляете ею едиными командами.

Пример docker-compose.yml для веб-приложения с Nginx и MySQL:

version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: app_db
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Основные команды и преимущества:

  • docker-compose up -d — запускает все сервисы в фоне.
  • docker-compose down — останавливает и удаляет контейнеры, сети (но не тома по умолчанию).
  • docker-compose logs -f [service] — просмотр логов.
  • Автоматическое создание сети: Все сервисы из одного файла попадают в общую сеть и могут обращаться друг к другу по имени сервиса (например, db).
  • Управление зависимостями: Параметр depends_on гарантирует порядок запуска.
  • Переменные окружения: Можно использовать файл .env для параметризации конфигурации.

В продакшене для оркестрации часто используют Kubernetes, но Docker Compose идеален для локальной разработки, тестирования и простых CI/CD пайплайнов.