Для чего нужен Docker Compose?

«Для чего нужен Docker Compose?» — вопрос из категории DevOps, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные задачи:

  • Оркестрация сервисов: Запуск связанных контейнеров (например, веб-приложение, база данных, кэш) одной командой.
  • Управление зависимостями: Автоматическое определение порядка запуска и связей между сервисами.
  • Конфигурация сети и томов: Создание изолированной сети для сервисов и общих томов для данных.
  • Управление переменными окружения: Централизованная настройка окружения для разных сред (dev, test).

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

version: '3.8'
services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/appdb
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: appdb
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Команды:

  • docker-compose up -d — запуск всех сервисов в фоне.
  • docker-compose down — остановка и удаление контейнеров, сети.
  • docker-compose logs -f web — просмотр логов конкретного сервиса.