Работали ли вы с Docker Compose?

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

Ответ

Да, активно использую Docker Compose для оркестрации многоконтейнерных приложений в среде разработки и для тестирования. Он позволяет декларативно описывать все сервисы, сети и тома в одном docker-compose.yml файле, что значительно упрощает запуск и управление.

Пример конфигурации для веб-приложения с бэкендом и базой данных:

version: '3.8'
services:
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    environment:
      - DB_HOST=db
    depends_on:
      - db
    volumes:
      - ./backend:/app
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Основные команды в работе:

  • docker compose up -d — запуск стека в фоновом режиме.
  • docker compose logs -f backend — потоковый просмотр логов конкретного сервиса.
  • docker compose down -v — остановка стека с удалением анонимных томов.
  • docker compose exec db psql -U postgres — выполнение команд внутри запущенного контейнера.

Практическое применение: Я использую Compose для локальной разработки, чтобы воспроизвести продакшен-подобное окружение (например, с PostgreSQL, Redis, Elasticsearch), и для прогона интеграционных тестов в CI/CD пайплайне (запуская стек, выполняю тесты, затем останавливаю).