2015-05-25 10 views
7

następującą linię w Dockerfile nie działa: wiadomośćJak korzystać z rur (ioredirection) w Dockerfile RUN?

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

Error:

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

Jak rozwiązać ten problem?

+2

Co powiesz na następującą odmianę: 'git archive master | tar xf - -C/path'? A jeśli to się nie powiedzie, czy możesz zweryfikować, że 'git archive' faktycznie działa w sposób jakiego oczekujesz przez coś w stylu' git archive master --output =/tmp/path.tar'? –

+0

Próbowałem rozwiązań VonC, wciąż nie mogłem używać rur w Dockerfile RUN. Wygląda na to, że Dockerfile nie radzi sobie z tym dobrze. Używanie archiwum git - output do pliku tar, a następnie 'tar -xf /path /to/file.tar -C/path/to/extract' to dzieło do tego problemu. –

+0

Przekonwertuję mój komentarz na odpowiedź - proszę oznaczyć jako zaakceptowany. –

Odpowiedz

2

Co z następującą odmianą: git archive master | tar xf - -C /path?

+0

To działa idealnie. Dzięki! :) –

1

Można spróbować polecenie sh -c

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

Jeśli nie, można uwzględnić tego polecenia w skrypcie, skopiować skrypt i uruchomić go.

0

Wygląda na to, że problem jest faktycznie z repozytorium git (lub katalogu Twój RUN jest wykonującego):

fatal: Not a valid object name 

Ten błąd jest pochodzących z git i sugeruje, że nie ma oddział nazwany master.

+0

Tak. To prawda. Nie sklonowałem repozytorium git do prawego folderu. Naprawiłem to, ale problem Pipes not working nadal istnieje. –