Что такое docker-compose.yml в Docker?

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

Ответ

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

Ключевые разделы файла:

  • version: Определяет схему формата Compose (например, '3.8').
  • services: Описание каждого контейнера-сервиса (образ, порты, переменные окружения, тома).
  • networks: Определение пользовательских сетей для изоляции сервисов.
  • volumes: Объявление именованных томов для хранения данных.

Пример файла для стека веб-приложения:

version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    depends_on:
      - app
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro

  app:
    build: ./app
    environment:
      - DATABASE_URL=postgres://db:5432/appdb
    depends_on:
      - db

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

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

docker-compose up -d    # Запуск сервисов в фоне
docker-compose ps       # Просмотр статуса сервисов
docker-compose logs -f  # Просмотр логов в реальном времени
docker-compose down     # Остановка и удаление контейнеров, сетей

Используется для локальной разработки, тестирования и как основа для более сложных оркестраторов в CI/CD.