Как запустить файл docker compose
Обновлено: 21.11.2024
Вы можете использовать подкоманду compose, docker compose [-f . ] [опции] [КОМАНДА] [ARGS. ] для создания нескольких служб в контейнерах Docker и управления ими.
Используйте -f, чтобы указать имя и путь к одному или нескольким файлам Compose
Используйте флаг -f, чтобы указать расположение файла конфигурации Compose.
Указание нескольких файлов Compose
Вы можете указать несколько файлов конфигурации -f. Когда вы предоставляете несколько файлов, Compose объединяет их в одну конфигурацию. Compose создает конфигурацию в том порядке, в котором вы предоставляете файлы. Последующие файлы переопределяют и добавляют к своим предшественникам.
Например, рассмотрим эту командную строку:
В файле docker-compose.yml может быть указана служба веб-приложений.
Если в файле docker-compose.admin.yml также указана эта же служба, любые совпадающие поля имеют приоритет над предыдущим файлом. Новые значения, добавьте в конфигурацию службы веб-приложения.
При использовании нескольких файлов Compose все пути в файлах относятся к первому файлу конфигурации, указанному с помощью -f . Вы можете использовать параметр --project-directory, чтобы переопределить этот базовый путь.
Используйте -f с - (тире) в качестве имени файла, чтобы прочитать конфигурацию со стандартного ввода. Когда используется стандартный ввод, все пути в конфигурации относятся к текущему рабочему каталогу.
Флаг -f является необязательным. Если вы не укажете этот флаг в командной строке, Compose просматривает рабочий каталог и его родительские каталоги в поисках файла compose.yaml или docker-compose.yaml.
Указание пути к одному файлу Compose
Вы можете использовать флаг -f, чтобы указать путь к файлу Compose, который не находится в текущем каталоге, либо из командной строки, либо путем настройки переменной среды COMPOSE_FILE в вашей оболочке или в файле среды.< /p>
В качестве примера использования параметра -f в командной строке предположим, что вы используете пример Compose Rails и имеете файл compose.yaml в каталоге с именем sandbox/rails . Вы можете использовать такую команду, как docker compose pull, чтобы получить образ postgres для службы db из любого места, используя флаг -f следующим образом:
Используйте -p, чтобы указать имя проекта
Каждая конфигурация имеет название проекта. Если вы укажете флаг -p, вы можете указать имя проекта. Если вы не укажете флаг, Compose использует имя текущего каталога. Имя проекта также можно задать с помощью переменной среды COMPOSE_PROJECT_NAME.
Большинство подкоманд compose можно запустить без файла compose, просто передав имя проекта для получения соответствующих ресурсов.
Использование профилей для включения дополнительных служб
Используйте --profile, чтобы указать один или несколько активных профилей. Вызов docker compose --profile frontend up запустит службы с интерфейсом профиля и службы без каких-либо указанных профилей. Вы также можете включить несколько профилей, например. с помощью docker compose --profile frontend --profile debug интерфейс профилей и отладка будут включены.
Профили также можно задавать с помощью переменной среды COMPOSE_PROFILES.
Настройка переменных среды
Вы можете установить переменные среды для различных параметров компоновки Docker, включая флаги -f , -p и --profiles.
Установка переменной среды COMPOSE_FILE эквивалентна передаче флага -f, переменная среды COMPOSE_PROJECT_NAME делает то же самое для флага -p, а также переменная среды COMPOSE_PROFILES для флага --profiles.
Если флаги явно установлены в командной строке, соответствующая переменная среды игнорируется
На этой странице вы создаете простое веб-приложение Python, работающее в Docker Compose. Приложение использует фреймворк Flask и поддерживает счетчик посещений в Redis. Хотя в примере используется Python, представленные здесь концепции должны быть понятны, даже если вы не знакомы с ним.
Предпосылки
Убедитесь, что вы уже установили Docker Engine и Docker Compose. Вам не нужно устанавливать Python или Redis, так как оба они предоставляются образами Docker.
Шаг 1. Настройка
Определить зависимости приложения.
Создайте каталог для проекта:
Создайте файл app.py в каталоге вашего проекта и вставьте его в:
В этом примере redis — это имя хоста контейнера redis в сети приложения. Мы используем порт по умолчанию для Redis, 6379 .
Обработка временных ошибок
Обратите внимание на то, как написана функция get_hit_count. Этот базовый цикл повтора позволяет нам несколько раз выполнить запрос, если служба Redis недоступна. Это полезно при запуске, когда приложение подключается к сети, но также делает наше приложение более устойчивым, если службу Redis необходимо перезапустить в любое время в течение жизненного цикла приложения. В кластере это также помогает справляться с мгновенными разрывами соединения между узлами.
Создайте еще один файл с именем requirements.txt в каталоге вашего проекта и вставьте его в:
Шаг 2. Создайте Dockerfile
На этом шаге вы пишете Dockerfile, который создает образ Docker. Образ содержит все зависимости, необходимые приложению Python, включая сам Python.
В каталоге проекта создайте файл с именем Dockerfile и вставьте следующее:
Это указывает Docker:
- Создайте образ, начиная с образа Python 3.7.
- Установите рабочий каталог /code .
- Установите переменные среды, используемые командой flask.
- Установите gcc и другие зависимости
- Скопируйте файл requirements.txt и установите зависимости Python.
- Добавьте метаданные к изображению, чтобы описать, что контейнер прослушивает порт 5000.
- Скопируйте текущий каталог. в проекте в рабочий каталог. на картинке.
- Установите команду по умолчанию для запуска контейнера.
Дополнительную информацию о том, как создавать файлы Dockerfile, см. в руководстве пользователя Docker и справочнике по файлам Docker.
Шаг 3. Определите сервисы в файле Compose
Создайте файл с именем docker-compose.yml в каталоге вашего проекта и вставьте следующее:
Этот файл Compose определяет две службы: web и Redis .
Веб-сервис
Веб-служба использует образ, созданный из файла Dockerfile в текущем каталоге. Затем он привязывает контейнер и хост-компьютер к открытому порту 8000. В этом примере службы используется порт по умолчанию для веб-сервера Flask — 5000 .
Служба Redis
Служба Redis использует общедоступный образ Redis, извлеченный из реестра Docker Hub.
Шаг 4. Создайте и запустите приложение с помощью Compose
Из каталога проекта запустите приложение, запустив docker-compose up .
Compose извлекает образ Redis, создает образ для вашего кода и запускает определенные вами службы. В этом случае код статически копируется в образ во время сборки.
В браузере должно появиться сообщение:
Обновите страницу.
Число должно увеличиваться.
Переключитесь в другое окно терминала и введите docker image ls, чтобы вывести список локальных образов.
Список изображений на этом этапе должен возвращать redis и web .
Вы можете проверять изображения с помощью docker inspect .
Остановите приложение, либо запустив команду docker-compose из каталога проекта во втором терминале, либо нажав CTRL+C в исходном терминале, где вы запустили приложение.
Шаг 5. Отредактируйте файл Compose, чтобы добавить монтирование привязки
Отредактируйте файл docker-compose.yml в каталоге вашего проекта, чтобы добавить привязку монтирования для веб-службы:
Новый ключ томов монтирует каталог проекта (текущий каталог) на хосте в /code внутри контейнера, что позволяет изменять код на лету без необходимости перестраивать образ. Ключ среды устанавливает переменную среды FLASK_ENV, которая указывает запуску flask запускаться в режиме разработки и перезагружать код при изменении. Этот режим следует использовать только в процессе разработки.
Шаг 6. Повторно создайте и запустите приложение с помощью Compose
В каталоге проекта введите docker-compose up, чтобы создать приложение с обновленным файлом Compose, и запустите его.
Снова проверьте сообщение Hello World в веб-браузере и обновите страницу, чтобы увидеть увеличение счетчика.
Если ваш проект находится за пределами каталога Users ( cd ~ ), вам необходимо предоставить общий доступ к диску или расположению файла Dockerfile и тома, которые вы используете. Если вы получаете ошибки во время выполнения, указывающие на то, что файл приложения не найден, монтирование тома отклонено или служба не может запуститься, попробуйте включить общий доступ к файлам или дискам. Для подключения тома требуются общие диски для проектов, находящихся за пределами C:\Users (Windows) или /Users (Mac), а также для любого проекта в Docker Desktop для Windows, использующего контейнеры Linux. Дополнительные сведения см. в разделе Общий доступ к файлам в Docker для Mac и общие примеры управления данными в контейнерах.
Если вы используете Oracle VirtualBox в более старой ОС Windows, вы можете столкнуться с проблемой с общими папками, как описано в этой заявке VB. Более новые системы Windows соответствуют требованиям Docker Desktop для Windows и не нуждаются в VirtualBox.
Шаг 7. Обновите приложение
Поскольку код приложения теперь монтируется в контейнер с помощью тома, вы можете вносить изменения в его код и мгновенно видеть изменения, не перестраивая образ.
Измените приветствие в app.py и сохраните его. Например, измените Hello World! сообщение Привет от Докера! :
Обновите приложение в браузере. Приветствие должно быть обновлено, а счетчик по-прежнему должен увеличиваться.
Шаг 8. Поэкспериментируйте с некоторыми другими командами
Если вы хотите запускать свои службы в фоновом режиме, вы можете передать флаг -d (для «отключенного» режима) для docker-compose up и использовать docker-compose ps, чтобы увидеть, что в данный момент выполняется:
Команда запуска docker-compose позволяет запускать одноразовые команды для ваших служб. Например, чтобы узнать, какие переменные среды доступны для веб-службы:
См. docker-compose --help, чтобы увидеть другие доступные команды. Вы также можете установить автозавершение команд для оболочек bash и zsh, которое также покажет вам доступные команды.
Если вы запустили Compose с помощью docker-compose up -d , остановите свои службы, как только закончите с ними:
Вы можете отключить все, полностью удалив контейнеры, с помощью команды down. Передайте --volumes, чтобы также удалить том данных, используемый контейнером Redis:
Docker Compose – это инструмент, разработанный для помощи в определении и совместном использовании приложений с несколькими контейнерами. С помощью Compose мы можем создать файл YAML для определения служб и с помощью одной команды можем все развернуть или разорвать.
Большое преимущество использования Compose заключается в том, что вы можете определить свой стек приложений в файле, хранить его в корне репозитория вашего проекта (теперь он контролируется версиями) и легко разрешить кому-то другому вносить свой вклад. к вашему проекту. Кому-то нужно будет только клонировать ваше репо и запустить приложение для создания. На самом деле, вы можете увидеть довольно много проектов на GitHub/GitLab, делающих именно это сейчас.
Итак, с чего начать?
Установите Docker Compose
Если вы установили Docker Desktop/Toolbox для Windows или Mac, у вас уже есть Docker Compose! В экземплярах Play-with-Docker уже установлен Docker Compose. Если вы работаете на компьютере с Linux, вам необходимо установить Docker Compose.
После установки вы сможете запустить следующее и просмотреть информацию о версии.
Создайте файл Compose
В корне проекта приложения создайте файл с именем docker-compose.yml .
В файле компоновки мы начнем с определения версии схемы. В большинстве случаев лучше использовать последнюю поддерживаемую версию. Текущие версии схемы и матрицу совместимости можно посмотреть в справочнике по файлу Compose.
Далее мы определим список служб (или контейнеров), которые мы хотим запускать как часть нашего приложения.
А теперь мы начнем по очереди переносить службы в файл компоновки.
Определить службу приложения
Напоминаем, что это была команда, которую мы использовали для определения нашего контейнера приложения.
Если вы используете PowerShell, используйте эту команду:
Во-первых, давайте определим запись службы и изображение для контейнера. Мы можем выбрать любое имя для службы. Имя автоматически станет сетевым псевдонимом, который будет полезен при определении нашего сервиса MySQL.
Обычно вы увидите команду, близкую к определению изображения, хотя требований к порядку нет. Итак, давайте переместим это в наш файл.
Давайте перенесем часть команды -p 3000:3000, указав порты для службы. Здесь мы будем использовать краткий синтаксис, но также доступен более подробный длинный синтаксис.
Далее мы перенесем как рабочий каталог ( -w /app ), так и отображение тома ( -v "$(pwd):/app" ), используя определения work_dir и volumes. Volumes также имеет короткий и длинный синтаксис.
Одним из преимуществ определений томов Docker Compose является то, что мы можем использовать относительные пути из текущего каталога.
Наконец, нам нужно перенести определения переменных среды с помощью ключа среды.
Определить службу MySQL
Теперь пришло время определить службу MySQL. Команда, которую мы использовали для этого контейнера, была следующей:
Если вы используете PowerShell, используйте эту команду:
Сначала мы определим новую службу и назовем ее mysql, чтобы она автоматически получила сетевой псевдоним. Мы продолжим и укажем используемое изображение.
Далее мы определим сопоставление томов. Когда мы запустили контейнер с помощью docker run, именованный том был создан автоматически. Однако этого не происходит при работе с Compose. Нам нужно определить том в разделе Volumes: верхнего уровня, а затем указать точку монтирования в конфигурации службы. При простом указании только имени тома используются параметры по умолчанию. Однако доступно гораздо больше вариантов.
Наконец, нам нужно только указать переменные среды.
На данный момент наш полный файл docker-compose.yml должен выглядеть следующим образом:
Запустить стек приложений
Теперь, когда у нас есть файл docker-compose.yml, мы можем его запустить!
Убедитесь, что никакие другие копии app/db не запущены первыми ( docker ps и docker rm -f ).
Запустите стек приложений с помощью команды docker-compose up. Мы добавим флаг -d, чтобы все работало в фоновом режиме.
Когда мы запустим это, мы должны увидеть такой вывод:
Вы заметите, что том был создан так же, как и сеть! По умолчанию Docker Compose автоматически создает сеть специально для стека приложений (поэтому мы не определили ее в файле компоновки).
Давайте посмотрим на журналы с помощью команды docker-compose logs -f. Вы увидите журналы от каждой из служб, чередующиеся в один поток. Это невероятно полезно, когда вы хотите отслеживать проблемы, связанные со временем. Флаг -f «следит» за журналом, поэтому вы получите оперативный вывод по мере его создания.
Если вы уже запустили команду, вы увидите вывод, который выглядит следующим образом:
Название службы отображается в начале строки (часто окрашено), чтобы различать сообщения. Если вы хотите просмотреть журналы для определенной службы, вы можете добавить имя службы в конец команды logs (например, docker-compose logs -f app ).
Совет: ожидание базы данных перед запуском приложения
Когда приложение запускается, оно фактически сидит и ждет, пока MySQL будет запущен и готов, прежде чем пытаться подключиться к нему. В Docker нет встроенной поддержки ожидания, пока другой контейнер будет полностью запущен, запущен и готов к запуску другого контейнера. Для проектов на основе Node вы можете использовать зависимость от порта ожидания. Аналогичные проекты существуют и для других языков/фреймворков.
На этом этапе вы сможете открыть свое приложение и увидеть, как оно работает. И эй! Осталась одна команда!
Просмотр стека приложений на панели инструментов Docker
Если мы посмотрим на панель инструментов Docker, то увидим, что там есть группа с именем app. Это «имя проекта» из Docker Compose, которое используется для группировки контейнеров. По умолчанию имя проекта — это просто имя каталога, в котором находится файл docker-compose.yml.
Если вы прокрутите приложение вниз, вы увидите два контейнера, которые мы определили в файле компоновки. Имена также немного более описательные, поскольку они следуют шаблону __ . Таким образом, очень легко быстро увидеть, какой контейнер является нашим приложением, а какой — базой данных mysql.
Снести все это
Когда вы будете готовы все разрушить, просто запустите docker-compose или нажмите на корзину на панели управления Docker для всего приложения. Контейнеры остановятся, а сеть будет удалена.
Предупреждение
Удаление томов
По умолчанию именованные тома в вашем файле компоновки НЕ удаляются при запуске docker-compose down . Если вы хотите удалить тома, вам потребуется добавить флаг --volumes.
Панель управления Docker не удаляет тома при удалении стека приложений.
После удаления вы можете переключиться на другой проект, запустить docker-compose и быть готовым внести свой вклад в этот проект! Это действительно не может быть намного проще!
Подведение итогов
В этом разделе мы узнали о Docker Compose и о том, как он помогает нам значительно упростить определение и совместное использование мультисервисных приложений. Мы создали файл Compose, переведя команды, которые мы использовали, в соответствующий формат Compose.
На этом уроке мы заканчиваем. Тем не менее, есть несколько рекомендаций по созданию образа, которые мы хотим осветить, поскольку существует большая проблема с Dockerfile, который мы использовали. Итак, давайте посмотрим!
Ускорение новых функций в Docker Desktop
Docker Desktop помогает легко создавать, совместно использовать и запускать контейнеры на Mac и Windows так же, как и в Linux. Docker справляется со сложной настройкой и позволяет вам сосредоточиться на написании кода. Благодаря положительной поддержке, которую мы получили в отношении обновлений подписки, мы начали работу над Docker Desktop для Linux, который является вторым по популярности запросом функции в нашей общедоступной дорожной карте. Если вы заинтересованы в раннем доступе, зарегистрируйтесь в нашей программе Developer Preview.
Compose – это инструмент для определения и запуска многоконтейнерных приложений Docker. С Compose вы используете файл YAML для настройки служб вашего приложения. Затем с помощью одной команды вы создаете и запускаете все службы из вашей конфигурации. Чтобы узнать больше обо всех функциях Compose, см. список функций.
Compose работает во всех средах: производственной, промежуточной, разработки, тестирования, а также в рабочих процессах непрерывной интеграции. Вы можете узнать больше о каждом случае в общих случаях использования.
Использование Compose состоит из трех шагов:
Определите среду своего приложения с помощью Dockerfile, чтобы его можно было воспроизвести где угодно.
Определите службы, из которых состоит ваше приложение, в файле docker-compose.yml, чтобы их можно было запускать вместе в изолированной среде.
Запустите docker compose, и команда Docker compose запустит и запустит все ваше приложение. Вы также можете запустить docker-compose up с помощью бинарного файла docker-compose.
Файл docker-compose.yml выглядит следующим образом:
Дополнительную информацию о файле Compose см. в справочнике по файлу Compose.
В Compose есть команды для управления всем жизненным циклом вашего приложения:
- Запускать, останавливать и перестраивать службы
- Просмотр состояния запущенных служб
- Потоковая передача выходных данных журнала запущенных служб.
- Выполнить одноразовую команду для службы
Составить документацию
Возможности
Несколько изолированных сред на одном хосте
Compose использует имя проекта, чтобы изолировать среды друг от друга. Вы можете использовать это название проекта в нескольких различных контекстах:
- на хосте разработки, чтобы создать несколько копий одной среды, например, когда вы хотите запустить стабильную копию для каждой функциональной ветви проекта
- на сервере CI, чтобы сборки не мешали друг другу, вы можете задать для имени проекта уникальный номер сборки
- на общем хосте или хосте разработки, чтобы разные проекты, которые могут использовать одни и те же имена сервисов, не мешали друг другу
Именем проекта по умолчанию является базовое имя каталога проекта. Вы можете задать собственное имя проекта, используя параметр командной строки -p или переменную среды COMPOSE_PROJECT_NAME.
Каталог проекта по умолчанию — это базовый каталог файла Compose. Пользовательское значение для него можно определить с помощью параметра командной строки --project-directory.
Сохранять данные тома при создании контейнеров
Compose сохраняет все тома, используемые вашими службами. Когда docker-compose up запускается, если он находит какие-либо контейнеры из предыдущих запусков, он копирует тома из старого контейнера в новый контейнер. Этот процесс гарантирует, что любые данные, которые вы создали в томах, не будут потеряны.
Если вы используете docker-compose на компьютере с Windows, см. раздел Переменные среды и настройте необходимые переменные среды в соответствии со своими потребностями.
Повторно создавать только измененные контейнеры
Compose кэширует конфигурацию, используемую для создания контейнера. При перезапуске службы, которая не изменилась, Compose повторно использует существующие контейнеры. Повторное использование контейнеров означает, что вы можете очень быстро вносить изменения в свою среду.
Переменные и перемещение композиции между средами
Compose поддерживает переменные в файле Compose. Вы можете использовать эти переменные, чтобы настроить композицию для разных сред или разных пользователей. Дополнительные сведения см. в разделе Замена переменных.
Вы можете расширить файл Compose, используя поле расширения или создав несколько файлов Compose. Дополнительные сведения см. в разделе Расширения.
Распространенные варианты использования
Compose можно использовать по-разному. Ниже описаны некоторые распространенные варианты использования.
Среды разработки
При разработке программного обеспечения крайне важно иметь возможность запускать приложение в изолированной среде и взаимодействовать с ним. Инструмент командной строки Compose можно использовать для создания среды и взаимодействия с ней.
Файл Compose позволяет документировать и настраивать все сервисные зависимости приложения (базы данных, очереди, кэши, API веб-сервисов и т. д.). Используя инструмент командной строки Compose, вы можете создать и запустить один или несколько контейнеров для каждой зависимости с помощью одной команды ( docker-compose up ).
Вместе эти функции предоставляют разработчикам удобный способ начать работу над проектом. Compose может сократить многостраничное «руководство разработчика по началу работы» до одного машиночитаемого файла Compose и нескольких команд.
Среды автоматизированного тестирования
Важной частью любого процесса непрерывного развертывания или непрерывной интеграции является набор автоматизированных тестов. Для автоматизированного сквозного тестирования требуется среда, в которой можно запускать тесты. Compose предоставляет удобный способ создания и уничтожения изолированных сред тестирования для вашего набора тестов. Определив полную среду в файле Compose, вы можете создавать и уничтожать эти среды всего несколькими командами:
Развертывание на одном хосте
Компания Compose традиционно ориентирована на рабочие процессы разработки и тестирования, но с каждым выпуском мы делаем успехи в работе над функциями, более ориентированными на производство.
Подробнее об использовании функций, ориентированных на производство, см. в этой документации.
Примечания к выпуску
Подробный список изменений для прошлых и текущих выпусков Docker Compose см. в журнале изменений.
Получение помощи
Docker Compose находится в активной разработке.Если вам нужна помощь, вы хотите внести свой вклад или просто хотите поговорить о проекте с единомышленниками, у нас есть несколько открытых каналов для связи.
Чтобы сообщить об ошибках или отправить запросы на добавление функций, используйте систему отслеживания ошибок на Github.
Чтобы внести изменения в код или документацию: отправьте запрос на вытягивание на Github.
На этой странице представлена информация об использовании команды docker-compose.
Обзор параметров команды и справка
Эту информацию также можно просмотреть, запустив docker-compose --help из командной строки.
Вы можете использовать двоичный файл Docker Compose, docker-compose [-f . ] [опции] [КОМАНДА] [ARGS. ] для создания нескольких служб в контейнерах Docker и управления ими.
Используйте -f, чтобы указать имя и путь к одному или нескольким файлам Compose
Используйте флаг -f, чтобы указать расположение файла конфигурации Compose.
Указание нескольких файлов Compose
Вы можете указать несколько файлов конфигурации -f. Когда вы предоставляете несколько файлов, Compose объединяет их в одну конфигурацию. Compose создает конфигурацию в том порядке, в котором вы предоставляете файлы. Последующие файлы переопределяют и добавляют к своим предшественникам.
Например, рассмотрим эту командную строку:
В файле docker-compose.yml может быть указана служба веб-приложений.
Если в файле docker-compose.admin.yml также указана эта же служба, любые совпадающие поля имеют приоритет над предыдущим файлом. Новые значения, добавьте в конфигурацию службы веб-приложения.
При использовании нескольких файлов Compose все пути в файлах относятся к первому файлу конфигурации, указанному с помощью -f . Вы можете использовать параметр --project-directory, чтобы переопределить этот базовый путь.
Используйте -f с - (тире) в качестве имени файла, чтобы прочитать конфигурацию со стандартного ввода. Когда используется стандартный ввод, все пути в конфигурации относятся к текущему рабочему каталогу.
Флаг -f является необязательным. Если вы не укажете этот флаг в командной строке, Compose просматривает рабочий каталог и его родительские каталоги в поисках файлов docker-compose.yml и docker-compose.override.yml. Вы должны предоставить хотя бы файл docker-compose.yml. Если оба файла находятся на одном уровне каталога, Compose объединяет два файла в одну конфигурацию.
Конфигурация в файле docker-compose.override.yml применяется поверх и в дополнение к значениям в файле docker-compose.yml.
Указание пути к одному файлу Compose
Вы можете использовать флаг -f, чтобы указать путь к файлу Compose, который не находится в текущем каталоге, либо из командной строки, либо путем настройки переменной среды COMPOSE_FILE в вашей оболочке или в файле среды.< /p>
В качестве примера использования параметра -f в командной строке предположим, что вы используете пример Compose Rails и имеете файл docker-compose.yml в каталоге с именем sandbox/rails . Вы можете использовать такую команду, как docker-compose pull, чтобы получить образ postgres для службы db из любого места, используя флаг -f следующим образом: docker-compose -f ~/sandbox/rails/docker-compose.yml pull db р>
Вот полный пример:
Используйте -p, чтобы указать имя проекта
Каждая конфигурация имеет название проекта. Если вы укажете флаг -p, вы можете указать имя проекта. Если вы не укажете флаг, Compose использует имя текущего каталога. См. также переменную среды COMPOSE_PROJECT_NAME.
Используйте --profile, чтобы указать один или несколько активных профилей
Вызов docker-compose --profile frontend up запустит службы с интерфейсом профиля и службы без указанных профилей. Вы также можете включить несколько профилей, например. с помощью docker-compose --profile frontend --profile debug интерфейс профилей, и отладка будет включена.
Настройка переменных среды
Вы можете установить переменные среды для различных параметров docker-compose, включая флаги -f и -p.
Например, переменная среды COMPOSE_FILE связана с флагом -f, а переменная среды COMPOSE_PROJECT_NAME связана с флагом -p.
Читайте также: