2015-05-25 1 views
7

seguente riga nel Dockerfile non funziona: messaggioCome utilizzare i pipe (ioredirection) in Dockerfile RUN?

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

Errore:

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

Come risolvere questo problema?

+2

Che ne dici della seguente variante: 'git archive master | tar xf - -C/path'? E se fallisce, puoi verificare che 'git archive' funzioni effettivamente come ti aspetti da qualcosa come' git archive master --output =/tmp/path.tar'? –

+0

Ho provato le soluzioni di VonC, non riesco ancora a usare le pipe in Dockerfile RUN. Sembra che Dockerfile non stia andando bene in questo. Usando git archive --output su un file tar, e quindi "tar -xf /path/to/file.tar -C/path/to/extract" è un modo per ovviare a questo problema. –

+0

Convertirò il mio commento in risposta - per favore segna come accettato. –

risposta

2

Come circa la seguente variazione: git archive master | tar xf - -C /path?

+0

Funziona perfettamente. Grazie! :) –

1

si può provare un comando sh -c

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

In caso contrario, è possibile includere il comando in uno script, copiare lo script ed eseguirlo.

0

Sembra che il problema è in realtà con il repository git (o la directory tua RUN è in esecuzione nella):

fatal: Not a valid object name 

Questo errore sta venendo da Git e suggerisce che non c'è ramo chiamato master.

+0

Sì. È vero. Non ho clonato il repository git in una cartella giusta. L'ho risolto, ma il problema dei pipe non funziona ancora. –