2015-05-25 2 views
7

Следующая строка в Dockerfile не работает: сообщениеКак использовать трубы (ioredirection) в Dockerfile RUN?

RUN git archive master | tar -x -C /path 

Ошибка:

fatal: Not a valid object name 
tar: This does not look like a tar archive 
tar: Exiting with failure status due to previous errors 

Как решить эту проблему?

+2

Как насчет следующего варианта: 'git archive master | tar xf - -C/path'? И если это не удается, можете ли вы проверить, что 'git archive' работает так, как вы ожидаете, например,' git archive master --output =/tmp/path.tar'? –

+0

Я пробовал решения VonC, все еще не в состоянии использовать каналы в Dockerfile RUN. Похоже, Dockerfile не работает. Использование git-архива - выход в tar-файл, а затем «tar -xf /path/to/file.tar -C/path/to/extract» - это работа над этой проблемой. –

+0

Я переведу свой комментарий к ответу - отметьте как принято. –

ответ

2

Как насчет следующего варианта: git archive master | tar xf - -C /path?

+0

Это прекрасно работает. Благодаря! :) –

1

Вы можете попробовать команду sh -c

RUN sh -c 'git archive master | tar -x -C /path' 

Если нет, то вы можете включить эту команду в скрипт, скопировать скрипт и запустить его.

0

Похоже, что проблема на самом деле с репозиторий (или каталога вашего RUN выполняется в):

fatal: Not a valid object name 

Эта ошибка происходит из мерзавца и предполагает, что нет ни одной отрасли имени master.

+0

Да. Это правда. Я не клонировал git repo в правильную папку. Я исправил его, но проблема с трубами не работает. –

Смежные вопросы