Я хочу использовать Dockerfile для создания изображения. Тем не менее, команды будут нуждаться в пользовательском вводе при их запуске. В настоящее время сборка не выполняется, поскольку докер выходит из пользовательского ввода. Я знаю, что я могу использовать опции -i -t для команды запуска docker, но я хочу сделать это в файле Docker. Как это возможно?
Интерактивная докерная сборка из dockerfile?
Ответ 1
Вы можете попробовать expect или аналогичный инструмент.
Самый простой способ его настройки - использовать инструмент autoexpect
, который позволяет запускать команды в интерактивном режиме и создает для вас ожидаемый script.
Я не мог заставить работать rvmsudo (я не использовал его и не хотел тратить на него слишком много времени), поэтому я решил использовать vi
. Первый запуск autoexpect
$ autoexpect vi test
Откроется vi
, и вы можете создать или отредактировать файл и сохранить его. После выхода из vi
вы увидите файл test
, а также ожидаете script script.exp
.
Затем вы можете удалить тестовый файл и выполнить script.exp
. Он будет воссоздавать один и тот же файл, используя те же шаги.
Инструмент autoexpect замечательный, но вам может понадобиться создать script с нуля, если вам нужно больше контролировать, что происходит. Например. если вы не хотите, чтобы script работал с точным ожидаемым входом.