Как указать тома для конкретного сайта для docker-compose

Я работаю над проектом с несколькими соавторами; для совместного использования кода и вычислительной среды мы создали репозиторий 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 такой функционал? Есть ли лучший способ добиться этого? Если нет, мне любопытно, знает ли кто-нибудь, какова может быть мотивация исключения этой функциональности и/или почему это не считается хорошей идеей.

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


person nben    schedule 17.10.2018    source источник


Ответы (1)


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

DATA_PATH=/mnt/shared/data

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

person hjsimpson    schedule 17.10.2018
comment
Ааа, спасибо, это именно то, что я искал! Для тех, кто нашел это, вот соответствующая ссылка на документацию: docs.docker .com/compose/environment-variables/#the-env-file - person nben; 17.10.2018
comment
Спасибо за ссылку, вы правы, всегда лучше предоставлять ссылки на документацию, я добавлю это к ответу. - person hjsimpson; 17.10.2018