Pergunta

Quero adicionar um arquivo (.tar.gz) e descompacte-o durante a criação da imagem usando um Dockerfile.

ADD archive.tar.gz /archive.tar.gz
RUN tar xzf archive.tar.gz

Quando quero descompactar o arquivo, recebo a seguinte mensagem:

tar: /archive.tar.gz: Cannot read: Is a directory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now

o que não faz sentido para mim, já que o arquivo archive.tar.gz não é um diretório.

Foi útil?

Solução

Depois de executar um commit intermediário da imagem do docker, pude ver que /archive.tar.gz na verdade é um diretório.Isso significa que o docker extrai automaticamente os arquivos ao adicioná-los durante a criação da imagem.

Agora eu também poderia encontrar isso documentado em documentação do docker.

(editar:arquivos, por ex. .sql.gz, não são descompactados ao adicionar)

Outras dicas

Se você quiser que o arquivo permaneça como está, use COPY, não ADD.

Para outros que se depararam com esse problema mais recentemente ao fazer referência controlo remoto URLs com seus ADD comandos, isso é um problema com o Docker 17.06.0-ce (2017-06-28).

De Notas de lançamento do Dockers:

Observação:O Docker 17.06.0 tem um problema no construtor de imagens que causa uma alteração no comportamento da instrução ADD do Dockerfile ao fazer referência a um arquivo .tar.gz remoto.O problema será corrigido no Docker 17.06.1.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top