Ключевые особенности и варианты использования

Предупреждение

С конца июня 2023 года Compose V1 больше не будет поддерживаться и будет удален из всех версий Docker Desktop.

Убедиться, что вы переключились на Compose V2 с помощью подключаемого модуля CLI docker compose или активировав параметр «Использовать Docker Compose V2» в Docker Desktop. Для получения дополнительной информации см. Эволюция Compose.

Использование Compose состоит из трёх шагов:

  1. Определяет среду вашего приложения с помощью Dockerfile, чтобы его можно было воспроизвести где угодно.

  2. Определте службы, из которых состоит ваше приложение, в docker-compose.yml, чтобы их можно было запускать вместе в изолированной среде.

  3. Запустите docker compose up, и Команду compose Docker и запускающее все ваше приложение. В качестве альтернативы вы можете запустить docker-compose up, используя автономный Compose (двоичный файл docker-compose).

docker-compose.yml выглядит так:

version: "{{ site.compose_file_v3 }}"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "8000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    depends_on:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

Дополнительные сведения о файле Compose см. в файле Справочник на Compose.

Основные возможности Docker Compose

Наличие нескольких изолированных сред на одном хосте

Compose использует имя проекта для изоляции сред друг от друга. Вы можете использовать это имя проекта в нескольких различных контекстах:

  • на хосте разработки для создания нескольких копий одной среды, например, когда вы хотите запустить стабильную копию для каждой функциональной ветви проекта

  • на сервере CI, чтобы сборки не мешали друг другу, вы можете установить имя проекта на уникальный номер сборки

  • на общем хосте или хосте разработки, чтобы разные проекты, которые могут использовать одни и те же имена служб, не мешали друг другу

Имя проекта по умолчанию — это базовое имя каталога проекта. Вы можете установить собственное имя проекта, используя параметр командной строки -p или Переменная среды COMPOSE_PROJECT_NAME.

Каталог проекта по умолчанию — это базовый каталог файла Compose. Пользовательское значение для него можно определить с помощью параметра командной строки --project-directory.

Сохранение данных тома при создании контейнеров

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

Если вы используете docker compose на компьютере с Windows, см. Переменные среды и настраивает необходимые переменные среды для ваших конкретных нужд.

Пересоздавайте только контейнеры, которые изменились

Compose кэширует конфигурацию, используемую для создания контейнера. При перезапуске службы, которая не изменилась, Compose повторно использует существующие контейнеры. Повторное использование контейнеров означает, что вы можете очень быстро вносить изменения в свою среду.

Поддерживает переменные и перемещение композиции между средами

Compose поддерживает переменные в файле Compose. Вы можете использовать данные переменные, чтобы настроить композицию для разных сред или разных пользователей. См. Подстановка переменных для более подробной информации.

Вы можете расширить файл Compose, используя поле extends или создав несколько файлов Compose. См. расширяет для более подробной информации.

Распространенные варианты использования Docker Compose

Compose можно использовать по-разному. Некоторые распространенные варианты использования рассмотрены далее.

Среды разработки

Когда вы разрабатываете программное обеспечение, возможность запускать приложение в изолированной среде и взаимодействовать с ним имеет решающее значение. Инструмент командной строки Compose можно использовать для создания среды и взаимодействия с ней.

Compose-файл предоставляет способ документирования и настройки всех сервисных зависимостей приложения (баз данных, очередей, кэшей, API-интерфейсов веб-сервисов и т. д.). Используя инструмент командной строки Compose, вы можете создать и запустить один или несколько контейнеров для каждой зависимости с помощью одной команды (docker compose up).

Вместе данные функции предоставляют разработчикам удобный способ начать работу над проектом. Compose может сократить многостраничное «руководство по началу работы для разработчиков» до одного машиночитаемого файла Compose и нескольких команд.

Автоматизированные среды тестирования

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

$ docker compose up -d
$ ./run_tests
$ docker compose down

Развертывание на одном хосте

Compose традиционно был ориентирован на рабочие процессы разработки и тестирования, но с каждым выпуском мы делаем успехи в более ориентированных на производство функциях.

Дополнительные сведения об использовании функций, ориентированных на производство, см. в разделе compose в производстве в этой документации.