Как указать специфичные для сайта тома для docker-compose - PullRequest
0 голосов
/ 17 октября 2018

Я работаю над проектом с несколькими соавторами;для совместного использования кода и вычислительной среды мы установили репозиторий github, включающий файлы Dockerfile и docker-compose.yml.Я могу работать над кодом, и мои соавторы могут просто извлекать репозиторий, запускать docker-compose up и иметь доступ к моим ноутбукам Jupyter в той же среде, в которой я их разрабатываю.

Единственная проблема с этим заключается в том, что мымы работаем на разных сайтах, данные, которые мы вычисляем, находятся в разных местах.Итак, со своей стороны, я хочу, чтобы мои docker-compose.yml включали:

  volumes:
    - /mnt/shared/data:/data

, в то время как моим соавторам нужно, чтобы он сказал что-то вроде

  volumes:
    - /Volumes/storage/data:/data

Я получу один способ сделать это:использовать переменную среды;в файле docker-compose.yml:

  volumes:
    - "$DATA_PATH":/data

Это заставляет их запускать что-то вроде:

DATA_PATH=/Volumes/storage/data docker-compose up

В качестве решения это не обязательно проблема, но она кажется неуклюжей дляя и не может самодокументироваться в хранилище.Я могу обернуть docker-compose в сценарий оболочки (потенциальное решение практически любой проблемы), но это также кажется неуклюжим.Я не могу не подозревать, что здесь есть лучшее решение.Docker-compose допускает такую ​​функциональность?Есть ли лучший способ сделать это?Если нет, мне любопытно, если кто-нибудь знает, что может быть мотивом исключения этой функции и / или почему это не считается хорошей идеей.

Заранее спасибо.

1 Ответ

0 голосов
/ 17 октября 2018

Вы очень близко.Я хотел бы добавить, что у вас есть специфичный для хоста файл .env, см. Переменные окружения в Compose , на каждом компьютере, в той же папке, что и docker-compose.yml, с

DATA_PATH=/mnt/shared/data

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

...