Что такое Docker Compose

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

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

Использование Compose обычно разделяется на три этапа:

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

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

  3. И наконец, выполнение команды docker-compose up которая запустит все ваше приложение.

Файл docker-compose.yml выглядит примерно так:

version: '2'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

Для большей информации по Compose файлам, читайте раздел руководство по Docker Compose файлам

Compose имеет команды для управления всем жизненным циклом приложения:

  • Запуск, остановка и пересоздание сервисов
  • Просмотр статус запущенных сервисов
  • Поток вывода журнала запущенных служб
  • Выполнение одноразовых команд в сервисах

Документация по Docker Compose

Возможности

Особенности Compose, которые делают его эффективным:

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

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

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

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

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

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

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

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

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

Compose поддерживает переменные в файле docker-compose. Вы можете использовать переменные для настройки композиции для различных сред или разных пользователей. Читайте раздел замена переменных для более подробной информации.

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

Области применения

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

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

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

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

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

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

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

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

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

Compose традиционно сфокусирован на рабочих процессах разработки и тестирования, но с каждым релизом мы добавляем новые возможности для использования в продакшн. Вы можете использовать Compose для деплоя на удаленном Docker Engine. Docker Engine может быть в одном экземпляре и работать с использованием Docker Machine или кластера Docker Swarm.

Больше информации вы можете почерпнуть в разделе посвященном использованию docker compose в продакшн.

Примечания к релизу

Подробный список изменений по текущему и предыдущим релизам Docker Compose читайте в логе изменений.

Помощь

Docker Compose находится на стадии активного развития. Если вам нужна помощь, хотели бы внести свой вклад, или просто хотите поговорить о проекте с единомышленниками, у нас есть целый ряд открытых каналов связи.

  • Сообщить о баге или предложить новый функционал вы можете на issue tracker в Github.

  • Поговорить о проекте в реальном времени можно на #docker-compose канале в IRC.

  • Для того, чтобы внести свой вклад кода или изменения в документации пожалуйста, отправьте pull request на Github.

Для получения дополнительной информации и ресурсов, пожалуйста, посетите страницу помощи на официальном сайте проекта.


Комментарии:

Комментариев нет, желаете стать первым?

Пожалуйста, авторизуйтесь что бы оставлять комментарии.