У меня возникла ситуация, когда мне нужно source
файл среды bash, который живет в отдельном томе (вытащил через volumes_from
в docker-compose
), когда контейнер запускается так, что все будущие команды, запущенные в контейнере, будут выполняться в этой среде bash (это запускает некоторые скрипты и устанавливает множество динамических переменных, втягиваемых из других мест). Причина, по которой я использую том вместо того, чтобы просто добавлять эту команду непосредственно к изображению, - это то, что файл окружения, который мне нужно включить, находится за пределами контекста Dockerfile, а Dockerfiles не поддерживает это.Могу ли я запустить сценарий bash из файла в отдельном томе докера, прежде чем контейнер начнет?
Я попытался добавить строку source /path/to/volume/envfile
к файлу .bashrc
пользователя root в надежде, что он будет запущен при запуске контейнера, но это не сработало. Я предполагаю, что это потому, что тома фактически не монтируются до тех пор, пока не запустится контейнер/оболочка, и уже запущены команды .bashrc
(что имеет смысл).
Есть ли у кого-нибудь идеи о том, как я могу выполнить что-то подобное? Я открыт для альтернативных методов, но одна вещь, которую я не могу здесь изменить, - это перемещение файла, который мне нужен внутри контекста Docker, поскольку это нарушит целый ряд других вещей.
My (слегка отредактированный) Dockerfile и Докер-compose.yml файлы: https://gist.github.com/joeellis/235d90799eb647ab00ec
EDIT: И как испытание, я пытаюсь запустить rake db:create:all
на контейнере, как docker-compose run app rake db:create:all
который возвращает ошибку, файл окружения, который мне нужен, не может быть найден/загружен. Интересно, что если я закрою контейнер и запустил команду, все это, похоже, отлично работает. Так может быть, когда контейнеру дается команда через run
, она не обязательно открывает оболочку, но использует что-то еще?
Работает отлично для меня. Каково ваше базовое изображение и запуск команд? – ISanych
@ Исаныч Ах, хорошо знать, что я на правильном пути, если он работает на вас. Отредактированный пост с файлами Dockerfile и docker-compose.yml – joeellis